首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头工人组成、管理环境

码头工人组成、管理环境
EN

Stack Overflow用户
提问于 2016-06-05 10:27:04
回答 2查看 274关注 0票数 2

我有以下docker-compose.yml文件在本地工作:

代码语言:javascript
复制
mongodb:
  image: mongo
  command: "--smallfiles --logpath=/dev/null"
web:
  build: .
  command: npm run dev
  volumes:
    - .:/myapp
  ports:
    - "3001:3000"
  links:
    - mongodb
  environment:
    PORT: 3000
    NODE_ENV: 'development'
seed:
 build: ./seed
 links:
   - mongodb

部署到服务器时,需要更改docker-compose.yml文件中的两项内容:

代码语言:javascript
复制
web:
  command: npm start
  environment:
    NODE_ENV: 'production'

我想在每次部署之后编辑文件并不是最舒服的方法。对于如何干净地管理docker-compose.yml文件中的环境,有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-05 18:47:05

通常的方法是使用复合重写文件。默认情况下,docker在启动时读取两个文件,docker-compose.ymldocker-compose.override.yml。您可以将任何想要重写的内容放在后者中。所以:

代码语言:javascript
复制
# docker-compose.yml
mongodb:
  image: mongo
  command: "--smallfiles --logpath=/dev/null"
web:
  build: .
  command: npm run dev
  volumes:
    - .:/myapp
  ports:
    - "3001:3000"
  links:
    - mongodb
  environment:
    PORT: 3000
    NODE_ENV: 'development'
seed:
  build: ./seed
  links:
    - mongodb

另外:

代码语言:javascript
复制
# docker-compose.override.yml
web:
  command: npm start
  environment:
    NODE_ENV: 'production'

然后可以运行docker-compose up并获得生产设置。如果您只想要开发,那么可以运行docker-compose -f docker-compose.yml up

一个更好的方法是以相关的方式命名您的撰写文件。所以,docker-compose.yml变成了development.ymldocker-compose.override.yml变成了production.yml或者什么的。然后,您可以为生产运行docker-compose -f development -f production up,只运行用于开发的docker-compose -f development。您可能还想了解一下extends 功能 of docker-compose。

票数 2
EN

Stack Overflow用户

发布于 2016-06-06 00:21:16

试着用我的方式。

这是是我在docker上运行的django项目的一个例子。

  1. 首先,在docker-compose.yml中,必须定义两个容器。首先是web,它意味着生产,其次是devweb,它意味着发展。
  2. 如果使用dockerfile,可以创建分隔的dockerfile (Dockerfile:用于生产,Dockerfile-dev用于开发)。

这样您就可以使用命令来运行了。例如:

  1. 生产用docker-compose -p $(PROJECT) up -d web
  2. docker-compose -p $(PROJECT) up --no-deps -d devweb促进发展

不管怎么说,我使用Makefile来管理所有的坞-撰写的命令,这使我非常容易。我只需要运行make command name来执行命令。

愿这个答案对你有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37640852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档