我如何 运行 两个命令作为单个 docker 的一部分 - 组成 "command"?

How do I run two commands as part of a single docker-compose "command"?

我正在使用 Docker v. 20.10.12。我已经在我的 docker-compose 文件中设置了这个容器…

  web:
    restart: always
    build: ./my-web
    ports:
      - "3000:3000"
    expose:
      - '3000'
    env_file: ./my-web/.docker_env
    command: rm -f /app/tmp/pids/*.pid && foreman start -f Procfile.hot
    volumes:
    - ./my-web/:/app
    depends_on:
      - db

当我开始使用“docker-compose up”时,上面的容器总是显示这个消息

my-web-1 exited with code 0

在此之前没有其他信息。但是,如果我将命令更改为

command: tail -F anything

然后登录docker容器,我可以运行

rm -f /app/tmp/pids/*.pid && foreman start -f Procfile.hot

很好,没有错误。我如何 运行 将其作为启动我的 Docker 容器的一部分而无需执行上面的手动步骤?

尝试将所有命令放入外部 sh 文件中。 在 docker-compose 使用

命令:/bin/sh -c "yourshfile.sh"

你可以做到

command: /bin/sh -c "rm -f /app/tmp/pids/*.pid && foreman start -f Procfile.hot"