【发布时间】:2020-11-01 07:22:38
【问题描述】:
听说过
Docker compose 是为开发而非生产而设计的。
但我看到人们在生产环境中使用 Docker compose 和绑定挂载。然后从 github 中提取最新的更改,它会在生产中实时显示,无需重建。但是其他人说你需要COPY . .进行生产和重建。
-
但是这是如何工作的呢?因为在
docker-compose.yaml中,您可以指定depends-on,它在另一个容器运行之前不会启动一个容器。如果我在生产中不使用docker-compose,那么这个呢?我将如何将我的 docker-compose 推送到生产环境(我有 4 个服务 / 4 个需要运行的图像)。有了docker-compose up -d,就这么简单。 -
如何单独构建每个图像?
-
如何将这些图像复制到我的生产服务器以运行它们(以正确的顺序)?我什至无法在我的机器上的任何地方找到构建映像。
这是我的 docker-compose.yaml 文件,非常适合开发
version: '3'
services:
# Nginx client server
nginx-client:
container_name: nginx-client
build:
context: .
restart: always
stdin_open: true
environment:
- CHOKIDAR_USEPOLLING=true
ports:
- 28874:3000
volumes:
- ./client:/var/www
- /var/www/node_modules
networks:
- app-network
# MySQL server for the server side app
mysql-server:
image: mysql:5.7.22
container_name: mysql-server
restart: always
tty: true
ports:
- "16427:3306"
environment:
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: BcGH2Gj41J5VF1
MYSQL_DATABASE: todo
volumes:
- ./docker/mysql-server/my.cnf:/etc/mysql/my.cnf
networks:
- app-network
# Nginx server for the server side app
nginx-server:
container_name: nginx-server
image: nginx:1.17-alpine
restart: always
ports:
- 49691:80
volumes:
- ./server:/var/www
- ./docker/nginx-server/etc/nginx/conf.d:/etc/nginx/conf.d
depends_on:
- php-server
- mysql-server
networks:
- app-network
# PHP server for the server side app
php-server:
build:
context: .
dockerfile: ./docker/php-server/Dockerfile
container_name: php-server
restart: always
tty: true
environment:
SERVICE_NAME: php
SERVICE_TAGS: dev
working_dir: /var/www
volumes:
- ./server:/var/www
- ./docker/php-server/local.ini:/usr/local/etc/php/conf.d/local.ini
- /var/www/vendor
networks:
- app-network
depends_on:
- mysql-server
# Networks
networks:
app-network:
driver: bridge
【问题讨论】:
标签: docker docker-compose containers