version: '3'
services:
nginx:
container_name: ${COMPOSE_PROJECT_NAME}_nginx_con
build:
context: .
dockerfile: ./.docker/nginx/Dockerfile
args:
- WEB_USER=${WEB_USER}
- WEB_GROUP=${WEB_GROUP}
ports:
- 8080:80
depends_on:
- php-fpm
volumes:
- ./src:/var/www:ro
- ./logs/nginx:/var/log/nginx
mysql:
container_name: ${COMPOSE_PROJECT_NAME}_mysql_con
build:
context: ./.docker/mysql
args:
- MYSQL_CONTAINER_USER=${MYSQL_CONTAINER_USER}
- MYSQL_CONTAINER_GROUP=${MYSQL_CONTAINER_GROUP}
volumes:
- ./logs/mysql:${MYSQL_LOG_DIR}
- ./database:/docker-entrypoint-initdb.d
environment:
- MYSQL_CONTAINER_USER=${MYSQL_CONTAINER_USER}
- MYSQL_CONTAINER_GROUP=${MYSQL_CONTAINER_GROUP}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
redis:
container_name: ${COMPOSE_PROJECT_NAME}_redis_con
build:
context: .
dockerfile: ./.docker/redis/Dockerfile
php-fpm:
container_name: ${COMPOSE_PROJECT_NAME}_php_con
build:
context: .
dockerfile: ./.docker/php${PHP_VER}-fpm/Dockerfile
args:
- WEB_USER=${WEB_USER}
- WEB_GROUP=${WEB_GROUP}
- PHP_ROOT_DIR=${PHP_ROOT_DIR}
working_dir: ${PHP_APP_DIR}
volumes:
- ./src:${PHP_APP_DIR}
- ./logs/php:${PHP_ROOT_DIR}/logs
environment:
- WEB_USER=${WEB_USER}
- WEB_GROUP=${WEB_GROUP}
- MYSQL_HOST=${MYSQL_HOST}
- MYSQL_ROOT_USER=${MYSQL_ROOT_USER}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- REDIS_HOST=${REDIS_HOST}
- REDIS_PORT=${REDIS_PORT}
docker-compose run
命令允许你为你的应用程序运行一次性命令。例如,查看哪些环境变量可以用于 web 服务:
docker-compose run nginx env
docker-compose run nginx ls -lah /var/www
.bulid服务除了可以基于指定的镜像,还可以基于一份 Dockerfile,在使用 up 启动之时执行构建任务,这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径。Compose 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器。
设定上下文根目录,然后以该目录为准指定 Dockerfile
nginx:
container_name: ${COMPOSE_PROJECT_NAME}_nginx_con
build:
context: .
dockerfile: ./.docker/nginx/Dockerfile
args:
- WEB_USER=${WEB_USER}
- WEB_GROUP=${WEB_GROUP}
args 添加构建参数,这些参数是仅在构建过程中可访问的环境变量,如 nginx 的 Dockerfile
FROM nginx:1.15-alpine
ARG WEB_USER
ARG WEB_GROUP
COPY ./.docker/nginx/conf.d /etc/nginx/conf.d
COPY ./src /var/www
RUN echo "Change folder owner to: ${WEB_USER}:${WEB_GROUP}"
RUN chown -R ${WEB_USER}:${WEB_GROUP} /var/www