我正在尝试将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密钥,令牌等(注意:配置文件未加密)。目前,我正在将此配置从存储库复制到容器中的以下位置/usr/.ops/config/api_tests.conf
,但由于安全方面的考虑,我不想这样做。因此,当我从ci / cd机器上运行容器时,如何复制api_tests.conf
文件(这意味着,从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”
请提供您的输入。
答案 0 :(得分: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 secret
与swarm orchestrator
一起使用。docker secret create api_test.conf /Users/basavarajlamani/Documents/api_tests.conf
的内容创建docker secret docker secret ls
将显示创建的机密。docker service create \
--name myservice \
--secret source=api_test.conf,target=/usr/.ops/config/api_tests.conf \
image-name
注意::您还可以使用docker config而不是docker secret,唯一的区别是它们不会在静态加密,而是直接安装在容器的文件系统中。
希望有帮助。