摘要:好久沒寫東西,今天說一說怎么自建一個運行的環境。注該鏡像是由社區聯合又拍云與優帆遠揚共同合作推出的公益項目,旨在為廣大用戶提供穩定和高速的國內鏡像服務。通過自建開發環境過程中,也能讓自己學到更多。接下來還會不斷完善,最小化滿足開發需要。
好久沒寫東西,今天說一說怎么自建一個 Laravel 運行的 Docker 環境。
市面上最出名的莫過于「laradock」https://github.com/laradock/laradock
Docker PHP development environment.
使用參考:http://laradock.io
既然是「自建」,那我們可以參考這個,最小化滿足 Laravel 運行的需要。
下面是我羅列出的基本條件:
軟件:PHP 7.2、Nginx、MySQL、Composer、NPM or Yarn 等等;
使用國內鏡像;使用國內鏡像;使用國內鏡像;
易于擴展使用,如隨時可以切換 PHP 版本,或者 Apache 和 Nginx 切換使用。
Docker-Compose要達到可擴展行,和「laradock」一樣,使用 Docker-Compose 編排的方式,將核心的幾個 image 組裝在一起。
php-fpm這里我們使用的是「DaoCloud」加速鏡像 —— 7.2-fpm-alpine。
該版本既用 PHP 7.2 版本,而且 alpine 最小化系統,可以基于此,安裝環境需要的額外工具:如,composer、nodejs、python、yarn 等。
FROM daocloud.io/php:7.2-fpm-alpine MAINTAINER coding01RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS curl-dev imagemagick-dev libtool libxml2-dev postgresql-dev sqlite-dev && apk add --no-cache curl git imagemagick mysql-client postgresql-libs && pecl install imagick && docker-php-ext-enable imagick && docker-php-ext-install curl iconv mbstring pdo pdo_mysql pdo_pgsql pdo_sqlite pcntl tokenizer xml zip && curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer && apk del -f .build-deps # 修改 composer 為國內鏡像 RUN composer config -g repo.packagist composer https://packagist.laravel-china.org # install prestissimo RUN composer global require "hirak/prestissimo" # install laravel envoy RUN composer global require "laravel/envoy" #install laravel installer RUN composer global require "laravel/installer" RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories RUN apk update && apk add -u nodejs libpng-dev python ENV PATH /root/.yarn/bin:$PATH RUN apk update && apk add curl bash binutils tar && rm -rf /var/cache/apk/* && /bin/bash && touch ~/.bashrc && curl -o- -L https://yarnpkg.com/install.sh | bash && yarn config set registry "https://registry.npm.taobao.org" && npm install -g cnpm --registry=https://registry.npm.taobao.org WORKDIR /var/www
其中安裝 alpine 系統插件,我們使用 mirrors.aliyun.com 阿里云鏡像。
php:7.2-fpm-alpine 具體使用,可以參考:https://dashboard.daocloud.io/packages/019c8dce-ec80-4468-bddc-254fc62ef5c7
nginx我們使用 nginx,主要是將網站的配置文件載入 nginx 中。
FROM daocloud.io/nginx:1.13-alpine MAINTAINER coding01ADD vhost.conf /etc/nginx/conf.d/default.conf WORKDIR /var/www
剩下就是連接這些 images。最后看看 docker-compose.yml 文件內容:
version: "2" services: # The Application app: build: context: ./ dockerfile: app.dockerfile working_dir: /var/www volumes: - ../:/var/www environment: - "DB_PORT=3306" - "DB_HOST=database" - "REDIS_HOST=redis" - "REDIS_PORT=6379" # The Web Server web: build: context: ./ dockerfile: web.dockerfile working_dir: /var/www volumes_from: - app ports: - 8080:80 # The Database database: image: daocloud.io/mysql:5.7.4 volumes: - dbdata:/var/lib/mysql environment: - "MYSQL_DATABASE=homestead" - "MYSQL_USER=homestead" - "MYSQL_PASSWORD=secret" - "MYSQL_ROOT_PASSWORD=secret" ports: - "3306:3306" redis: image: daocloud.io/library/redis:4.0.10-alpine command: redis-server --appendonly yes volumes: dbdata:測試一遍 創建 Laravel 項目
composer create-project laravel/laravel demo
注:為了做測試,可以將 vendor 文件夾和 composer.lock 文件刪除。
git clone在 demo 項目相同文件夾下,git clone 我們自建的「laraveldocker」:
git clone https://github.com/fanly/laraveldocker.git修改 docker-compose.yml
將 docker-compose.yml 文件的路徑執行我們的項目:
app: build: context: ./ dockerfile: app.dockerfile working_dir: /var/www volumes: - ../:/var/wwwbuild
在 laraveldocker 下執行構建命令:
docker-compose up
整個速度還是蠻快的
接下來進入容器內
docker exec -it de075c525528 bash
我們看看安裝插件的效果:
使用的是 https://packagist.laravel-china.org 國內鏡像。
注:該鏡像是由 Laravel China 社區聯合 又拍云 與 優帆遠揚 共同合作推出的公益項目,旨在為廣大 PHP 用戶提供穩定和高速的 Composer 國內鏡像服務。值得推薦使用
參考:http://laravel-china.org/topics/4484/composer-mirror-use-help
使用 yarn 或者 cnpm 安裝插件:
生成 Laravel key secret:
cp .env.example .env php artisan key:generate Application key [base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=] set successfully.
運行下看看效果吧:
我們接下來看看數據庫連接吧,修改 .env:
DB_CONNECTION=mysql DB_HOST=database DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
我們使用 php artisan make:auth 來生成布局、注冊和登錄視圖以及所有的認證接口的路由。同時它還會生成 HomeController 來處理應用的登錄請求。使用 php artisan migrate 來載入數據。
我們看看數據表:
至此,說明我們連接 MySQL 數據庫 OK.
總結在學習過程中,使用別人做好的 Dockerfile,雖可以直接拿來使用,但如果能自給自足,那最好不過了。
通過自建 docker 開發環境過程中,也能讓自己學到更多。接下來還會不斷完善,最小化滿足開發需要。
代碼已放在 github 上,歡迎參考和提出 issue:
https://github.com/fanly/laraveldocker
最后也可以看之前對 「Laradock」的使用文章:
通過 Laradock 學 Docker —— 配置篇
通過 Laradock 學 Docker-HTTPS
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27373.html
摘要:好久沒寫東西,今天說一說怎么自建一個運行的環境。注該鏡像是由社區聯合又拍云與優帆遠揚共同合作推出的公益項目,旨在為廣大用戶提供穩定和高速的國內鏡像服務。通過自建開發環境過程中,也能讓自己學到更多。接下來還會不斷完善,最小化滿足開發需要。 showImg(https://segmentfault.com/img/remote/1460000015722901); 好久沒寫東西,今天說一說...
摘要:本文就介紹如何使用搭建本地環境。講座介紹是現在火熱的一個容器技術,作為開發人員有必要掌握它的使用,無論你是用來搭建本地環境,還是部署應用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作為本地開發環境,Homestead 是一個官方預封裝的 Vagrant Box,也就是一個虛擬機,但是跟...
摘要:本文就介紹如何使用搭建本地環境。講座介紹是現在火熱的一個容器技術,作為開發人員有必要掌握它的使用,無論你是用來搭建本地環境,還是部署應用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作為本地開發環境,Homestead 是一個官方預封裝的 Vagrant Box,也就是一個虛擬機,但是跟...
摘要:基于快速搭建服務根據自定義配置文件快速搭建環境。目錄此項目能做什么地址視頻教程包含軟件項目目錄結構快速運行運行服務運行項目運行前端服務此項目能做什么搭建開發生產環境。搭建開發生產環境。 基于Docker快速搭建Web服務 根據自定義配置文件快速搭建Web環境。 目錄 此項目能做什么 GItHub地址、視頻教程 包含軟件 項目目錄結構 快速運行KFKDock 運行PHP服務 運行L...
閱讀 2784·2021-09-01 10:30
閱讀 1679·2019-08-30 15:52
閱讀 964·2019-08-29 18:40
閱讀 1115·2019-08-28 18:30
閱讀 2391·2019-08-23 17:19
閱讀 1321·2019-08-23 16:25
閱讀 2699·2019-08-23 16:18
閱讀 2977·2019-08-23 13:53