【问题标题】:stack name with docker-compose带有 docker-compose 的堆栈名称
【发布时间】:2018-11-20 21:18:25
【问题描述】:

在使用 docker-compose 时有没有办法设置栈名?

目前它使用文件夹名称(这是一个可怕的区域),这会导致一些混乱。

例如,我们有几个项目有一个包含数据库堆栈的数据库文件夹。当在单个主机上运行这些时,我们现在有多个数据库堆栈。

【问题讨论】:

    标签: docker-compose


    【解决方案1】:

    有几种方法可以做到:

    1.调用docker-compose时使用--project-name(或-p)选项:

    docker-compose -p "my-app" up

    注意:-p "my-app" 必须在 up 之前。

    2。 COMPOSE_PROJECT_NAME 环境变量:

    export COMPOSE_PROJECT_NAME=my-app
    docker-compose up
    

    3. .env 文件中的 COMPOSE_PROJECT_NAME

    在项目根目录中创建一个名为 .env 的文件,并在那里设置 COMPOSE_PROJECT_NAME 环境变量:

    COMPOSE_PROJECT_NAME=some_app
    

    然后:

    docker-compose up
    

    .env 文件是从 docker-compose 命令所在的文件夹 中读取的 执行,而不是从 docker-compose.yml 文件的文件夹中执行。

    假设项目结构如下:

    root
     - database
       - docker-compose.yml
       - .env
     - app
       - docker-compose.yml
       - .env
     - ...
    

    在根文件夹中执行的以下命令不会产生预期的效果:

    # Stack name 'database' (the folder name). The root/database/.env file not read.
    docker-compose -f ./database/docker-compose.yml up
    

    docker-compose命令需要在root/database文件夹中执行:

    # Stack name from the root/database/.env
    cd database
    docker-compose up
    

    如果您使用选项 2 或 3,项目名称将应用于所有 docker-compose 命令,就像使用 -p 选项指定一样。

    【讨论】:

    • 你不能在 docker-compose.yml 中设置它真是令人沮丧
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多