1

下面是我的 python 应用程序的目录结构和 dockerfile。为了运行main.py,我需要通过运行创建一个数据集generate_data.py,它位于数据目录中。如何创建多级 dockerfile 以便首先创建数据然后运行main.py文件?我是使用 docker 的新手,我感到不知所措。

在此处输入图像描述

FROM python:3.7.2-slim
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . /usr/src/app
CMD ["python", "./src/main.py"]
4

2 回答 2

0

您可以创建一个 shell 脚本,然后将其用于 CMD

开始.sh:

#!/bin/bash
python generate_data.py
python ./src/main.py

Dockerfile:

FROM python:3.7.2-slim
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . /usr/src/app
CMD ["sh", "start.sh"]
于 2020-05-31T23:07:09.817 回答
0

使用 docker 的一个关键点可能是隔离您的程序,因此乍一看,您可能希望将它们移动到单独的容器中并使用共享卷或 docker 网络相互通信,但如果您真的需要它们在其中运行同一个容器,您可以通过使用 bash 脚本来实现。并将 CMD 替换为:

COPY run.sh
RUN chmod a+x run.sh
CMD ["./run.sh"]

您还可以将 if 语句包含到 bash 脚本中,并通过 docker 将参数传递给 bash 脚本。

于 2020-05-31T23:10:32.090 回答