【问题标题】:docker-compose execute commanddocker-compose 执行命令
【发布时间】:2019-10-22 17:53:14
【问题描述】:

我正在尝试将一些命令放在我的 docker-compose 文件中以在我的容器中运行,但它们不起作用。

我将一个卷从主机映射到我有根证书的容器,我要做的就是运行这个命令update-ca-certificates,所以它会用我在容器中的证书更新目录 /etc/ssl/certs ,但是它没有发生。

我试图在 Dockerfile 中解决这个问题,我可以看到命令运行,但似乎证书不存在,只是在我登录容器后出现。

我最终要做的是进入容器,然后手动运行所需的命令。

这是我一直在尝试使用的docker-compose 文件:

build:
      context: .
      dockerfile: Dockerfile
    command: >
      sh -c "ls -la /usr/local/share/ca-certificates &&
             update-ca-certificates"
    security_opt:
      - seccomp:unconfined
    volumes:
      - "c:/certs_for_docker:/usr/local/share/ca-certificates"

以同样的方式,我无法运行 apt update 或类似的东西,但在使用 docker exec -it test_alerting_comp /bin/bash 连接到容器后,我可以从任何 repo 中提取任何内容。

我的目标是在构建时执行任何需要的命令,所以当我登录到容器时,我已经有了我将要使用的包并更新了根证书,谢谢。

【问题讨论】:

  • 你能发布你的 Dockerfile 吗?
  • @MarcABOUCHACRA 我只是错过了 Dockerfile 中的 env vars,感谢您的帮助。

标签: docker docker-compose docker-volume docker-container


【解决方案1】:

为什么不在 Dockerfile 中进行软件包更新/安装和复制证书?

Dockerfile

...
RUN apt-get update && apt-get -y install whatever

COPY ./local/certificates /usr/local/share/my-certificates

RUN your-command-for-certificates

docker-compose.yml

version: "3.7"
services:
  your-service:
    build: ./dir

【讨论】:

  • 嗨,您的回答帮助我理解我做错了什么......问题是我认为仅在 docker-compose 文件中使用环境变量就足以让容器准备好使用linux repo,它不是那样的。我所做的是将Dockerfile 与环境变量一起使用,然后按照您的建议放置所需的Linux 命令,瞧!一切都在工作。谢谢:-)
猜你喜欢
  • 1970-01-01
  • 2023-01-28
  • 2015-07-15
  • 2020-03-23
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多