這篇文章要跟大家分享的內容是關於自己搭建一個 Laravel 的 Docker的開發環境,有一定的參考價值,有需要的朋友可以參考一下。
好久沒寫東西,今天說一說怎麼自建一個 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 切換使用。
要達到可擴充行,和「laradock」一樣,使用Docker-Compose 編排的方式,將核心的幾個image 組裝在一起。
這裡我們使用的是「DaoCloud」加速鏡像 —— 7.2-fpm-alpine
。
此版本既用PHP 7.2
版本,而且alpine
最小化系統,可以基於此,安裝環境需要的額外工具:如,composer
、nodejs
、python
、yarn
等。
FROM daocloud.io/php:7.2-fpm-alpine MAINTAINER coding01 <yemeishu@126.com> RUN 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
。
FROM daocloud.io/nginx:1.13-alpine MAINTAINER coding01 <yemeishu@126.com> ADD 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
專案相同資料夾下,
我們自建的「laraveldocker」:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">git clone https://github.com/fanly/laraveldocker.git</pre><div class="contentsignin">登入後複製</div></div>
修改docker-compose.yml將
docker-compose.yml
檔案的路徑執行我們的專案:
app: build: context: ./ dockerfile: app.dockerfile working_dir: /var/www volumes: - ../:/var/www
build
#在
下執行建置指令:
docker-compose up
#整個速度還蠻快的
docker exec -it de075c525528 bash
cp .env.example .env php artisan key:generate Application key [base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=] set successfully.
DB_CONNECTION=mysql DB_HOST=database DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
以上是自己搭建一個 Laravel 的 Docker的開發環境的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!