将文件从dockerfile构建版本复制到主机- bandit

brjng4g3  于 2022-12-18  发布在  Docker
关注(0)|答案(2)|浏览(151)

我刚开始学习docker,为了自学,我尝试了容器化bandit(一个python代码扫描器),但是在容器自我销毁之前,我无法看到扫描的输出,我怎样才能把输出文件从容器中复制到主机上,或者保存它呢?
现在我只是用强盗扫描自己基本上:)
停靠文件

FROM python:3-alpine
WORKDIR /
RUN pip install bandit
RUN apk update && apk upgrade
RUN apk add git
RUN git clone https://github.com/PyCQA/bandit.git ./code-to-scan
CMD [ "python -m bandit -r ./code-to-scan -o bandit.txt" ]
bf1o4zei

bf1o4zei1#

您可以在主机上挂载一个卷,以便共享bandit的输出。
例如,可以使用以下命令运行容器:

docker run -v $(pwd)/output:/tmp/output -t your_awesome_container:latest

你在你的档案里:

...
CMD [ "python -m bandit -r ./code-to-scan -o /tmp/bandit.txt" ]

这样,bandit.txt文件将位于output文件夹中。

s6fujrry

s6fujrry2#

最好把代码放在你的图片中,而不是根目录中。我对你的Dockerfile做了一些调整。

FROM python:3-alpine
WORKDIR /usr/myapp
RUN pip install bandit
RUN apk update && apk upgrade
RUN apk add git
RUN git clone https://github.com/PyCQA/bandit.git .
CMD [ "bandit","-r",".","-o","bandit.txt" ]`

这会在你的WORKDIR中克隆git。注意CMD,它是一个数组,所以只需要像Dockerfile中那样划分所有的命令和参数。
我把Docker文件放在我的D:\test目录(Windows). docker build -t test中。
docker run -v D:/test/:/usr/myapp test它将在test文件夹中生成bandit.txt。
代码执行后,容器退出,因为没有其他操作要做。
您还可以输入--rm,以便在容器完成后将其删除。

docker run --rm  -v D:/test/:/usr/myapp test

相关问题