我有一个Dockerfile
:
FROM ubuntu:18.04
RUN apt-get -y update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update -y
RUN apt-get install -y python3.7 build-essential python3-pip
RUN pip3 install --upgrade pip
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
ENV FLASK_APP application.py
COPY . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
EXPOSE 5000
ENTRYPOINT python3 -m flask run --host=0.0.0.0
但是我还想在运行ENTRYPOINT
之前运行python3 download.py
。如果我把它放在这里,然后build
,那么它在这里执行。我需要它只在ElasticBeanstalk上执行
我该怎么做
有一种模式是使用Docker
ENTRYPOINT
进行首次设置,然后启动CMD
。例如,您可以编写一个入口点脚本,如由于这是一个shell脚本,您可以在这里包含所需的任何逻辑或附加设置
在Dockerfile中,需要在此脚本中将
ENTRYPOINT
行更改为CMD
,COPY
,并将其设置为图像的ENTRYPOINT
如果您想调试它,因为这个设置尊重“命令”部分,所以您可以运行一个一次性容器来启动一个交互式shell,而不是Flask进程。这仍将执行首次设置,但随后从
docker run
命令而不是CMD
行中运行该命令您可以控制是否使用环境变量运行
python3 download.py
。然后在本地运行docker run -e....
相关问题 更多 >
编程相关推荐