架構一個基於Docker Compose 的 PHP Laravel 開發環境
Docker Compose
操作過 Docker 指令的同學們,應該都嘗試過用指令的方式管理 Docker 容器, 當需要運行的容器愈來愈多時管理的指令是又多又複雜。 Docker Compose 是一個定義多個 Docker 容器的工具,讓我們可以使用 YAML 格式的配置文件管理多個容器, 並幫助我們快速的佈建一套系統,提供了單一的命令,我們可以一次性的運行或停止相互依賴的容器。
安裝 Docker
基本的安裝可以參考 Docker 安裝筆記 - 以LNMP為例的應用
安裝 Docker Compose
在安裝好Docker 之後、我們可以開始安裝 Docker Compose, 首先我們需要先安裝 python-pip
sudo yum install -y epel-release
sudo yum install -y python-pip
接下來就可以安裝Docker Compose了
pip install docker-compose
需要的話將 Python 相關的套件更新一下讓 Docker Compose 能夠順利運行
yum upgrade python*
PHP Laravel
Laravel 是一個網頁應用框架實現了MVC的架構,運用了 Composer 這個套件相依性管理系統,提供連接許多種類的RDBMS的方式, 提供開發語法糖使開發常見痛點的實現變的簡單,像是權限管理、路由、Sessions、及快取機制。
接下來我們試著以安裝 Laravel 的開發環境為例,進行 Docker Compose 的配置
1. 初始化我們的目錄結構
mkdir -p html log/nginx log/php mariadb nginx phpfpm var-lib-mysql
docker pull mariadb/server:10.3
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=passwd -d mariadb/server:10.3
docker cp mariadb:/etc/mysql/my.cnf ./mariadb/my.cnf
docker stop mariadb
docker rm mariadb
docker pull nginx:1.15
docker run --name nginx -v /data/html:/usr/share/nginx/html:ro -p 80:80 -d nginx:1.15
docker cp nginx:/etc/nginx/conf.d/default.conf ./nginx/default.conf
docker stop nginx
docker rm nginx
docker pull php:7.3-fpm
docker run --name php-fpm -p 9000:9000 -d php:7.3-fpm
docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf ./phpfpm/www.conf
docker cp php-fpm:/usr/local/etc/php/php.ini-production ./phpfpm/php.ini
docker stop php-fpm
docker rm php-fpm
tree .
.
├── docker-compose.yml
├── html
│ └── phpinfo.php
├── log
│ ├── nginx
│ └── php
├── mariadb
│ └── my.cnf
├── nginx
│ └── default.conf
├── phpfpm
│ ├── php.ini
│ └── www.conf
└── var-lib-mysql
8 directories, 6 files
2. 配置docker-compose.yml
主要是運行 Mariadb, nginx, php-fpm 這三個容器
……