从docker-compose.yml将参数传递到docker容器中

时间:2020-10-13 18:47:16

标签: docker docker-compose

我正在尝试从手动调用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对此抱怨:

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

1 个答案:

答案 0 :(得分:3)

您将docker run中的图像名称后面传递的所有内容都解释为“命令”部分,并且将其传递到command:中的docker-compose.yml字段中:

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

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

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