0

我正在尝试将 API 自动化存储库容器化以在 ci/cd(gocd) 上运行它。下面是Dockerfile内容。

FROM alpine:latest

RUN apk add --no-cache python3 \
    && pip3 install --upgrade pip

WORKDIR /api-automation

COPY . /api-automation

RUN pip --no-cache-dir install .

COPY api_tests.conf /usr/.ops/config/api_tests.conf

ENTRYPOINT ["pytest" "-s" "-v" "--cache-clear" "--html=report.html"]

下面是api_tests.conf配置文件的内容。

[user]
username=<user_name>
apikey=<api_key>

[tokens]
token1=<token1>

api_tests.conf是配置文件,它包含敏感数据,如 API 密钥、令牌等(注意:配置文件未加密)。目前我正在将此配置从 repo 复制到/usr/.ops/config/api_tests.conf容器中的以下位置,但我不想这样做,因为存在安全问题。那么api_tests.conf当我从 ci/cd 机器运行容器时如何复制这个文件(这意味着,从 Dockerfile,我需要删除指令COPY api_tests.conf /usr/.ops/config/api_tests.conf)。

我的第二个问题是,如果我使用命令创建一个秘密文件docker secret create my_secret file_path,我如何api_tests.conf在运行容器时复制这个秘密文件。

注意:将api_tests.conf文件复制到容器后,我需要运行命令“pytest -s -v --cache-clear --html=report.html”

请提供您的意见。

4

1 回答 1

2

如果您想避免将此行COPY api_tests.conf /usr/.ops/config/api_tests.conf放入,请dockerfile使用命令-v选项将docker run文件/目录从主机挂载到容器文件系统中。

docker run -itd -v /Users/basavarajlamani/Documents/api_tests.conf:/usr/.ops/config/api_tests.conf image-name

如果你想使用docker secret来复制配置文件

  • 确保您使用的是docker swarm,因为docker secretswarm orchestrator.
  • 使用配置文件的内容创建 docker secretdocker secret create api_test.conf /Users/basavarajlamani/Documents/api_tests.conf
  • docker secret ls将显示创建的秘密。
  • 在 swarm 中将 docker 容器作为服务运行。
docker service create \
     --name myservice \
     --secret source=api_test.conf,target=/usr/.ops/config/api_tests.conf \
     image-name

注意:您也可以使用docker config而不是 docker secret,唯一的区别是它们在静态时没有加密,而是直接挂载到容器的文件系统中。

希望能帮助到你。

于 2019-07-16T16:11:30.960 回答