如何使用 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