跳转至

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

参考

docker 编排工具 docker-compose

回到页面顶部