我想尝试使用docker作为我的网站。我使用php, nginx, mysql
。我配置了docker,并且我在本地运行了我的网站。现在我想将我的网站发布到生产中。
我在开发人员和生产版本之间没什么区别:
我可以使用一个docker-compose.yml文件运行docker吗? 或者我应该为开发人员和生产版本创建两个版本的docker-compose文件?但在这种情况下,我失去了码头工人的优势 - 同样的环境evrywhere。如果我更改docker-compose-dev.yml,我需要记住更改docker-compose-prod.yml。
我的docker-compose.yml:
version: '2'
services:
app:
build: .
volumes:
- ./app:/app
container_name: app
app_nginx:
image: nginx
ports:
- "8080:80"
container_name: app_nginx
volumes:
- ./data/nginx:/etc/nginx/conf.d
- ./app:/app
environment:
- VIRTUAL_HOST=app.dev
app_db:
image: mysql:5.7
volumes:
- "./data/db:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: "app_db"
container_name: app_db
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
答案 0 :(得分:2)
您可以使用基于环境变量的配置来实现此目的。 通常不同的环境,即分段和生产,只有它需要连接的数据库,它调用的外部服务,它们的终点和凭证等配置才有所不同。
不是对所有这样的配置进行硬编码,而是从环境变量中读取它们。因此,您可以将具有不同环境变量的相同docker-compose文件用于登台和生产环境。
您还可以在http://rancher.com/探索Rancher Labs的Rancher来管理您的环境。