Docker-compose复制配置文件

5
我正在尝试为一个需要在后台运行的服务创建docker-compose。该服务对应的镜像已经存在,其中包含一个配置文件和入口点["/usr/bin/java", ...]。
我想改变配置文件的内容,但是不确定最好的方法是什么,避免再创建一个额外的dockerfile来重新创建带有适当文件的镜像?
由于入口点是/usr/bin/java,所以我不确定如何能够使用docker-compose的命令来修改文件内容。
version: 2
services:
  myService:
    image: serviceA from registry
     # Would like to modify a config file's content...

  mainAPI:
     ...

谢谢你


为什么不更改复制内容或在您的Dockerfile中添加复制内容呢? - Yonah Dissen
1个回答

13

你需要在docker-compose.yml中添加一个卷引用。

version: 2
services:
  myService:
    image: serviceA from registry
     # Would like to modify a config file's content...
    volumes:
      - /path/to/host/config.conf:/path/to/container/config/to/overwrite/config.conf

  mainAPI:
     ...

自3.3版本以来,您也可以创建自己的docker配置文件来覆盖现有的配置文件。这与上面类似,只是docker配置现在是原始配置文件的副本,而不是绑定到主机配置文件。

version: 3.3
services:
  myService:
    image: serviceA from registry
     # Would like to modify a config file's content...
    configs:
      - source: myconfigfile
        target: /path/to/container/config/to/overwrite/config.conf

  mainAPI:
     ...

configs:
  myconfigfile:
    file: ./hostconfigversion.conf

请查看https://docs.docker.com/compose/compose-file/#long-syntax获取更多信息。


5
注意,configs: 关键字仅适用于 Docker Swarm,而不是 Docker Compose,并且此事实未在链接页面中提到。请参阅 https://github.com/docker/compose/issues/5110。 - madstap
配置定义仅支持Compose文件格式的3.3及更高版本。 - Julien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接