【问题标题】:How to get rid of absolute paths from a file generated by docker-compose config?如何从 docker-compose config 生成的文件中删除绝对路径?
【发布时间】:2020-05-29 09:53:42
【问题描述】:

我有大量的 docker-compose 文件。一些定义我的微服务,一些定义基础设施部分,如数据库、消息总线等。我需要将它们全部合并到一个大的 docker-compose.yml 文件中,以便我可以通过我的 CI/CD 管道轻松运行它。我为此编写了这个 shell 脚本,但似乎 docker-compose config 命令生成了一个带有绝对路径的文件:

#!/bin/bash

ymls=`ls **/docker-compose.*.yml`
compose_string=""

for file in $ymls
do
    compose_string="${compose_string} -f ${file} --project-directory ."
done

echo $compose_string

docker-compose $compose_string config > docker-compose.merged.yml

这给了我以下文件内容(为简洁起见):

services:
  curator-services:
    build:
      args:
        ELASTIC_PASSWORD: them-pass
      context: E:\repos\them-project\devops\curator
  manager-acl-app:
    build:
      context: E:\repos\them-project
      dockerfile: services/ThemProject.Services.ManagerAcl/Dockerfile

现在,简单的解决方案是运行一个正则表达式或其他东西,并替换与单词context 在同一行中的任何内容。这种方法的问题在于,我将基础设施定义保存在我的微服务 Dockerfile 之外的另一个文件夹中,因此 curator-services 部分的 context 应该是 context: curator/ ,对于 manager-acl-app 应该是 context: ../ .有没有办法使用docker-compose config 绕过这些绝对路径?

【问题讨论】:

    标签: docker docker-compose yaml


    【解决方案1】:

    您可以将--project-directory 选项与docker-compose config 一起使用。

    把你的脚本改成下面的

    #!/bin/bash
    
    ymls=`ls docker-compose.*.yml`
    compose_string=""
    DIR_PATH="." #Change it to Project Directory or current directory
    for file in $ymls
    do
        compose_string="${compose_string} -f ${file} --project-directory $DIR_PATH"
    done
    
    docker-compose ${compose_string} config > docker-compose.yml
    

    参考:-https://docs.docker.com/compose/reference/overview/

    请查看以上链接中的--project-directory

    【讨论】:

    • 如果我使用它,会生成一个空文件。
    • 你能粘贴输出吗?
    • 抱歉,我必须处理其他事情。回答您的问题:输出是可用 docker-compose 命令的列表
    • 我刚刚更新了我原来的问题。顺便提一句。该标志是--project-directory,而不是--project-dir
    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2018-10-12
    • 1970-01-01
    相关资源
    最近更新 更多