如何在docker-compose.yml中设置/获取项目名称

时间:2015-04-03 09:05:58

标签: docker fig docker-compose

我正在尝试设置docker-compose项目名称,或者能够在我的配置文件中引用它。这些都有可能吗?

我问的原因是我正在关注this tutorial所以我最终得到了一个docker-container.yml文件,内容为

web:
  build: .
  command: bundle exec rails s -p 3000 -b 0.0.0.0
  ports:
    - "3000:3000"
  links:
    - db
  volumes: 
    - ".:/myapp"
  volumes_from:
    - bundle

db:
  image: mongo
  ports:
    - "27017"

bundle:
  image: myapp_web  # <--- this is actually {$project_name}_web being hard-coded
  command: echo Hello
  volumes:
    - /bundle

由于image: myapp_web配置,这仅在项目名称本身为myapp时才有效。如果我正在处理名为myapp的目录或使用docker-compose -p myapp目录,则会出现这种情况。

但是只要有人更改目录名称,就会崩溃。我想告诉docker-compose使用自定义COMPOSE_PROJECT_NAME变量而不必传递-p fancyname选项。

我能想象的另一种方法是在yml文件中传递某种image: {$COMPOSE_PROJECT_NAME} _ web,但我真的不确定这是否可以实现。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

在Github上有一个relevant issue用于Docker编写,你可能想要查看。

答案 1 :(得分:2)

这只是基于我最初评论的答案。

当从同一图像构建多个服务时,通常可以安全地再次构建它。在这种情况下,bundle可以构建.。由于您只是再次构建web,因此它将被缓存(因此可以快速构建)并且具有相同的图像ID。