Как запустить определенный файл, прежде чем что-либо еще произойдет в Docker Run - PullRequest
2 голосов
/ 19 апреля 2019

У меня есть следующий файл Docker.


MAINTANER Your Name "youremail@domain.tld"

RUN apt-get update -y && \
    apt-get install -y python-pip python-dev

# We copy just the requirements.txt first to leverage Docker cache
COPY ./requirements.txt /app/requirements.txt

WORKDIR /app

RUN pip install -r requirements.txt

COPY . /app

ENTRYPOINT [ "python" ]

CMD [ "app.py" ]

Есть один файл, который я хочу запустить даже до запуска файла app.py.Как я могу этого достичь?Я не хочу помещать код в app.py.

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

Одним из решений может быть использование сценария docker-entrypoint.sh.По сути, эта точка входа позволит вам определить набор команд для запуска вашей программы.

Например, я мог бы создать следующий docker-entrypoint.sh:

#!/bin/bash
set -e
if [ "$1" = 'app' ]; then
   sh /run-my-other-file.sh
   exec python app.py
fi
exec "$@"

И я бы использовал его так же, как в моем Dockerfile:

FROM alpine
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["app"]

ТамЕсть много статей и примеров в Интернете о Docker-точки входа.Вы должны быстро его найти. Я уверен, что вы найдете много интересных примеров, которые используются в известных контейнерах производственного класса.

0 голосов
/ 19 апреля 2019

Вы можете попробовать создать файл bash с именем run.sh и поместить его внутрь

app.py

, попробуйте изменить CMD

CMD [ "run.sh" ]

Также убедитесь, что разрешение висполняемый файл для run.sh

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...