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 這三個容器

……

Continue reading