首页 > 解决方案 > 从 docker-compose.yml 将参数传递到 docker 容器

问题描述

我正在尝试从手动调用 docker 迁移,如下所示:

docker run -v /tmp/bazel:/data -p 9090:8080 buchgr/bazel-remote-cache --max_size=1300

使用docker-compose.yml文件,但似乎不知道如何将其传递--max_size给容器:

version: "3"
services:
  worker:
    image: buchgr/bazel-remote-cache
    deploy:
      mode: replicated
      replicas: 2
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
    ports:
      - 9090:8080
      - 6060:6060
        #args:
        #- max_size=1300
    volumes:
      - "/bazel_cache:/data"

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - 8080:8080
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]

我在这里想念什么?我已经尝试过了,args: ..但码头工人抱怨它:

$ docker stack deploy -c docker-compose.yml bazel_remote_cache
args Additional property args is not allowed

标签: dockerdocker-compose

解决方案


您在图像名称之后传递的任何内容都docker run被解释为“命令”部分,并且您将在以下command:字段中传递它docker-compose.yml

version: "3"
services:
  worker:
    command: --max_size=1300

如果您需要替换该字段,您可以单独覆盖entrypoint:(相当于)。docker run --entrypoint

如果您控制服务,还可以考虑通过环境变量设置这些值;这通常比提供命令行参数更容易在部署层设置。如果您可以使默认的主命令简短,command: run_service --max_size=1300那么在此处指定为完整命令也更清楚。


推荐阅读