有人使用docker來安裝laravel本地環境嗎,應該怎麼做,安裝好後怎麼開發,就是一整套流程應該是什麼樣的?
謝邀,說一下我的方案,希望能帶給題主微小的幫助。
首先你需要明確,一容器一進程,多容器協作完成。
所以,需要以下四個容器:
nginx
作用:回應 web 請求,處理靜態檔案。
鏡像:無需自己構建,直接拉去官方鏡像。
php-fpm
作用:處理 PHP 腳本。
鏡像:由於專案中可能依賴不同的擴展,需要依賴官方鏡像自行構建, 另外還需要 composer 支援。
mysql
作用:資料庫。
redis
作用:快取資料庫。
下面說一下 php-fpm 鏡像的構建,需要注意以下幾點:
直接依賴官方的 php:7.0.12-fpm 鏡像即可,無需自己從頭開始構建,版本可自行選擇,不排除最新版本有 bug 的問題。
php:7.0.12-fpm
不當玩具使用的話最好不要使用 alpine 系列的鏡像,雖然它小巧玲瓏。
alpine
一個簡單的 dockerfile 範例:
FROM php:7.0.12-fpm MAINTAINER Tairy <tairyguo@gmail.com> WORKDIR /working RUN apt-get update --fix-missing && apt-get install -y \ g++ autoconf bash git apt-utils libxml2-dev libcurl3-dev pkg-config \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && docker-php-ext-install iconv curl mbstring \ xml json mcrypt mysqli pdo pdo_mysql zip \ && docker-php-ext-configure gd \ --with-gd \ --with-freetype-dir=/usr/include/ \ --with-png-dir=/usr/include/ \ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install gd \ && docker-php-ext-enable gd \ && pecl install /pecl/redis-3.0.0.tgz \ && docker-php-ext-enable redis \ && apt-get purge -y --auto-remove \ && rm -rf /var/cache/apt/* \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /pecl # 安装 composer RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ && php composer-setup.php \ && php -r "unlink('composer-setup.php');" \ && mv composer.phar /usr/local/bin/composer \ && composer self-update \ && composer config -g repo.packagist composer https://packagist.phpcomposer.com \ && composer global require "laravel/installer=~1.1" \ && composer global require predis/predis \ && wget https://phar.phpunit.de/phpunit.phar \ && chmod +x phpunit.phar \ && mv phpunit.phar /usr/local/bin/phpunit
當然,建置過程中可能會遇到 GFW 的問題,可以參考我的文章做一些調整:Docker 實踐(七):提升幸福感
建置好鏡像之後,多容器管理需要使用編排工具 docker-compose,所以还需要编写 docker-compose.yml 文件,一個簡單的範例(不要忘了看註解):
docker-compose
docker-compose.yml
version: '2' services: nginx: image: nginx:alpine depends_on: - red ports: - 8080:80 volumes: - /path/to/nginx.conf:/etc/nginx/nginx.conf - /path/to/default.conf:/etc/nginx/conf.d/default.conf # 这个挂载是为了处理静态文件 - /path/to/static:/working networks: - app app: image: your-php-fpm-image depends_on: - mysql - redis volumes: - .:/working - /path/to/php.ini:/usr/local/etc/php/php.ini networks: - app mysql: image: mysql:latest environment: TZ: 'Asia/Shanghai' MYSQL_ROOT_PASSWORD: 123456 volumes: - ./data:/var/lib/mysql ports: - 8002:3306 networks: - app redis: image: redis:latest ports: - 8003:6379 networks: - app networks: app:
需要注意的幾點:
一定要定義網路。
nginx.conf, default.conf, php.ini 最好自己定義,掛載到容器中。
不要忘了設定時區。
這樣在nginx的 default.conf 檔案可以這樣寫:
server { listen 80 default_server; server_name default; location /static/ { root /working; index index.html; } index index.html index.php; root /working/public; location / { try_files $uri $uri/ /index.php?$query_string; } location /packages { try_files $uri $uri/; } location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+\.php)(/.+)$; # 注意下面这行,pass 到 php-fpm 容器的服务名即可。 fastcgi_pass app:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } sendfile off; }
至此,設定工作完成,以後你只需要 cd 到你的專案目錄下執行
docker-compose up -d
就可以進行開發了,是不是很簡單。
好吧,我就推薦這個吧Laradock 另外,如果英文閱讀有障礙的話,可以看看院長的文章... Laravel學院當然,還有很多可以參考借鑒的東西,我想問問該死的谷歌會更好
推薦 Github 上的 laradock ,別忘了 配置一個國內的加速,不然下載會很慢
謝邀,說一下我的方案,希望能帶給題主微小的幫助。
首先你需要明確,一容器一進程,多容器協作完成。
所以,需要以下四個容器:
nginx
作用:回應 web 請求,處理靜態檔案。
鏡像:無需自己構建,直接拉去官方鏡像。
php-fpm
作用:處理 PHP 腳本。
鏡像:由於專案中可能依賴不同的擴展,需要依賴官方鏡像自行構建, 另外還需要 composer 支援。
mysql
作用:資料庫。
鏡像:無需自己構建,直接拉去官方鏡像。
redis
作用:快取資料庫。
鏡像:無需自己構建,直接拉去官方鏡像。
下面說一下 php-fpm 鏡像的構建,需要注意以下幾點:
直接依賴官方的
php:7.0.12-fpm
鏡像即可,無需自己從頭開始構建,版本可自行選擇,不排除最新版本有 bug 的問題。不當玩具使用的話最好不要使用
alpine
系列的鏡像,雖然它小巧玲瓏。一個簡單的 dockerfile 範例:
當然,建置過程中可能會遇到 GFW 的問題,可以參考我的文章做一些調整:Docker 實踐(七):提升幸福感
建置好鏡像之後,多容器管理需要使用編排工具
docker-compose
,所以还需要编写docker-compose.yml
文件,一個簡單的範例(不要忘了看註解):需要注意的幾點:
一定要定義網路。
nginx.conf, default.conf, php.ini 最好自己定義,掛載到容器中。
不要忘了設定時區。
這樣在nginx的 default.conf 檔案可以這樣寫:
至此,設定工作完成,以後你只需要 cd 到你的專案目錄下執行
就可以進行開發了,是不是很簡單。
好吧,我就推薦這個吧
Laradock
另外,如果英文閱讀有障礙的話,可以看看院長的文章...
Laravel學院
當然,還有很多可以參考借鑒的東西,我想問問該死的谷歌會更好
推薦 Github 上的 laradock ,別忘了 配置一個國內的加速,不然下載會很慢