docker-编写执行命令

docker-compose execute command

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

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

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

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

这是我一直在尝试使用的 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 中提取任何东西。

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

为什么不打包 update/install 并在 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