构建后如何运行Docker命令?

沙吞

我有一个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

但我也想在运行python3 download.py之前先运行ENTRYPOINT如果我将其放在此处,然后在此处build执行。我需要它仅在ElasticBeanstalk上执行。

我该怎么办?

大卫·迷兹

有一种使用DockerENTRYPOINT进行首次设置,然后启动的模式CMD例如,您可以编写一个入口点脚本,例如

#!/bin/sh

# Do the first-time setup
python3 download.py

# Run the CMD
exec "$@"

由于这是一个Shell脚本,因此您可以在此处包括所需的任何逻辑或其他设置。

在你Dockerfile,你需要改变你的ENTRYPOINT线路CMDCOPY在这个脚本,并将其设置为图像的ENTRYPOINT

...
COPY . /app
...

# If the script isn't already executable on the host
RUN chmod +x entrypoint.sh

# Must use JSON-array syntax
ENTRYPOINT ["/app/entrypoint.sh"]

# The same command as originally
CMD python3 -m flask run --host=0.0.0.0

如果要调试此设置,则由于此设置遵循“命令”部分,因此您可以运行一个一次性容器,该容器启动交互式外壳程序,而不是Flask进程。仍然会进行首次设置,但是然后从docker run命令而不是CMD行中运行命令

docker run --rm -it myimage bash

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章