当前位置: 首页 > 知识库问答 >
问题:

无法定位和持久化由build Docker命令运行的代码生成的文件

邴姚石
2023-03-14
FROM python:3.7.5-alpine3.10 as base
FROM base as builder
RUN mkdir /install
WORKDIR /install
pip install flask

COPY *.py /app/

WORKDIR /app
RUN python main.py

main.py有一个生成XML报表的代码。当我在cmd提示符下调用python main.py时,生成报告并将其保存在代码所在的同一目录中。但是当我调用build Docker(它反过来调用RUN main.py)时,我无法找到报告。我构建docker的方式如下:

docker build -f ./Dockerfile

只有基于报告输出的成功,我才决定是否创建docker图像。

共有1个答案

胡新
2023-03-14

给定以下文件

# Dockerfile

FROM python:alpine
RUN mkdir /app
WORKDIR /app
COPY *.py /app/
RUN python main.py
# main.py

import random
import sys

if __name__ == "__main__":
  num = random.randint(1, 10)
  print(num)
  with open("output.txt", "w") as f: f.write(str(num))
  sys.exit(0 if num % 2 == 0 else 1)

如果随机抽取的整数为偶数,则将创建名为foo的docker映像,否则将失败

docker build -f ./Dockerfile -t foo .

如果创建了映像,您可以通过以下方式读取脚本的输出

docker run --rm foo cat /app/output.txt
id=$(docker create foo)
docker cp $id:/app/output.txt ./
docker rm -v $id
 类似资料:
  • 到目前为止,我们已经构建了一个有工作量证明机制的区块链。有了工作量证明,挖矿也就有了着落。虽然目前距离一个有着完整功能的区块链越来越近了,但是它仍然缺少了一些重要的特性。在今天的内容中,我们会将区块链持久化到一个数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。本质上,区块链是一个分布式数据库,不过,我们暂时先忽略 “分布式” 这个部分,仅专注于 “存储” 这一点。 选择数

  • 整个错误消息: 错误:无法运行的自定义生成命令 原因:进程未成功退出:(exit code:101)---stdout cargo:rerun-if-env-changed=gmp_mpfr_sys_cache$mkdir-p“\target\debug\build\gmp-mpfr-sys-dcad4e240d8aac65\out\try_external_doc”$printf'%s'“//t

  • 我正在使用Visual Studio Code,但我无法运行“在路径中安装代码命令”选项,因为当我键入Shift Ctrl P时,此命令不会出现。我正在使用Windows 10和最新版本的Visual Studio Code。 我尝试了许多步骤来解决我的问题,但没有成功。以下是我所做的: 重新安装了Visual Studio Code(最新版本),并检查了要添加到PATH变量的选项。不起作用。 打

  • 我安装了wsl(Linux的Windows子系统),上面有ubuntu和jupyter笔记本。当我运行我的jupyternote手册时,我收到了这个错误消息。你能给我一些建议吗?非常感谢! Start:由于以下错误,无法运行此命令:系统找不到指定的文件。第1行字符:1 Start "file:///home/purit/.local/share/jupyter/runtime/nbserver-2

  • 本文向大家介绍Myeclipse 自动生成可持久化类的映射文件的方法,包括了Myeclipse 自动生成可持久化类的映射文件的方法的使用技巧和注意事项,需要的朋友参考一下 1.打开DB Browser,新建一个数据库的连接,找到想要持久化操作的数据库表的图标,右键选择hibernate reverse engineering 2.之后出现如下所示:      java src folder:对应工

  • 我没有得到“你好”:请想知道为什么和做什么