如何使用 Docker-Compose 部署 PHP 项目?
2017-05-25 by dongnan
目标
phpwind
程序,拆成3个容器,运行在docker上
,节省资源。- 使用
docker-compose
编排工具 ,自动化部署phpwind
程序。
环境
nginx:latest 镜像(自定义)
php:5.6-fpm 镜像(自定义)
mysql:latest 镜像
Docker 17.05.0-ce
CentOS 7.3 amd64
配置文件
目录结构
tree ywwd/
ywwd/
├── docker-compose.yml
├── nginx
│ ├── conf
│ │ ├── default.conf
│ │ ├── nginx.conf
│ │ ├── sources.list
│ │ ├── sources.list.8
│ │ └── ywwd.conf
│ └── Dockerfile
├── php
│ ├── conf
│ │ ├── php.ini
│ │ ├── sources.list
│ │ └── www.conf
│ ├── Dockerfile
│ └── txt
└── readme.txt
4 directories, 13 files
docker-compose
cat docker-compose.yml
version: '2'
services:
zm-php:
build: php/
volumes:
- /etc/localtime:/etc/localtime
- www-data:/var/www/html/bbs
links:
- zm-db:mysql-server
zm-web:
build: nginx/
volumes:
- /etc/localtime:/etc/localtime
- www-data:/var/www/html/bbs
ports:
- 80:80
- 443:443
links:
- zm-php:php-server
zm-db:
image: mysql:5.7
volumes:
- /etc/localtime:/etc/localtime
- mysql-data:/var/lib/mysql
environment:
- MYSQL_DATABASE=demo-db
- MYSQL_USER=demo-user
- MYSQL_PASSWORD=password
- MYSQL_ROOT_PASSWORD=password
command:
--character-set-server=utf8
--collation-server=utf8_general_ci
--sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
volumes:
mysql-data:
driver: local
www-data:
driver: local
使用
启动服务
docker-compose up -d
验证
列出创建的容器
docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------
ywwd_zm-db_1 docker-entrypoint.sh --cha ... Up 3306/tcp
ywwd_zm-php_1 docker-php-entrypoint php-fpm Up 9000/tcp
ywwd_zm-web_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp