配置应用容器
同样使用 docker-compose 创建应用。
这是一个 php 项目,所以这个应用里至少需要 nginx 和 php-fpm 两个服务容器,项目目录结构如下:
baipiaoquan/
├── docker-compose.yml
├── log
│ └── nginx
│ └── error.log
├── nginx
│ ├── Dockerfile
│ ├── log
│ ├── nginx.conf
│ ├── sites
│ │ └── baipiaoquan.com.conf
│ ├── ssl
│ │ ├── baipiaoquan.com.key
│ │ ├── baipiaoquan.com.pem
│ └── startup.sh
└── php-fpm
├── Dockerfile
└── php.ini
docker-compose.yml
version: '3'networks:
proxy:
external:
name: ${PROXY_NETWORK_NAME}
backend:
driver: ${NETWORKS_DRIVER}
services:
php-fpm:
build:
context: ./php-fpm
volumes:
- ./php-fpm/php.ini:/usr/local/etc/php/php.ini
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
networks:
- backend
nginx:
build:
context: ./nginx
args:
- PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
- PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
- ./log:/var/log/nginx
- ./sites:/etc/nginx/sites-available
- ./ssl:/etc/nginx/ssl
container_name: ${COMPOSE_PROJECT_NAME}_nginx
depends_on:
- php-fpm
networks:
- proxy
- backend
为了方便调整,这里使用了环境变量。
注意 nginx 的容器名称 container_name: ${COMPOSE_PROJECT_NAME}_nginx,这个值很关键并且会在后续代理中用到。
.env
# 宿主机中代码的位置
APP_CODE_PATH_HOST=../# 容器中代码的位置
APP_CODE_PATH_CONTAINER=/var/www
# 这个是抄的 laradock
APP_CODE_CONTAINER_FLAG=:cached
# 选择机器上的存储路径。适用于所有储存系统
DATA_PATH_HOST=~/.baipiaoquan/data
### Drivers ################################################
# All volumes driver
VOLUMES_DRIVER=local
# 网络驱动
NETWORKS_DRIVER=bridge
# 代理网络名称,这是前面创建的
PROXY_NETWORK_NAME=proxy-network
### Docker compose files ##################################
#
COMPOSE_FILE=docker-compose.yml
# Change the separator from : to ; on Windows
COMPOSE_PATH_SEPARATOR=:
# 项目名称
COMPOSE_PROJECT_NAME=baipiaoquan
使用的代理网络名称是:proxy-network,这是在前面创建的;
nginx 的容器名称会是:baipiaoquan_nginx。










