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

Mih*_*los 1 docker docker-compose

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

docker run -v /tmp/bazel:/data -p 9090:8080 buchgr/bazel-remote-cache --max_size=1300
Run Code Online (Sandbox Code Playgroud)

使用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]
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?我已经尝试过args: ..,但 docker 抱怨它:

$ docker stack deploy -c docker-compose.yml bazel_remote_cache
args Additional property args is not allowed
Run Code Online (Sandbox Code Playgroud)

Dav*_*aze 6

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

version: "3"
services:
  worker:
    command: --max_size=1300
Run Code Online (Sandbox Code Playgroud)

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

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