Как запустить сценарий оболочки из образа докера, когда мы запускаем этот образ - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь докернизировать свое веб-приложение. В моем файле Docker я извлекаю свой код из gitlab, затем устанавливаю модуль узла в сам контейнер кода. После создания образа я пытаюсь запустить образ докера, чтобы создать контейнер, в котором мне нужно запустить скрипт оболочки, как только я создаю контейнер из изображения.

FROM alpine

LABEL MAINTAINER "CoE"
WORKDIR /

ARG proxy
ARG username
ARG pswd

RUN export http_proxy=$proxy                                                                    && \
    export https_proxy=$proxy                                                                   && \
    git clone -b master https://$username:$pswd@git.devops.company.net/dlr_ui         && \
    npm install                     

 EXPOSE 14001 14002 14003 14004 14005 14006 14007 14008
 WORKDIR /applications/package/ui_servers 
CMD [./startUIServer]

Для сборки:

docker build --no-cache --build-arg proxy=$http_proxy --build-arg username=abcd --build-arg pswd=12123%4022121 -t ui2 .

затем запустить:

docker run -d -it -p 14001:14001 -p 14002:14002 -p 14003:14003 -p 14004:14004 -p 14005:14005 -p 14006:14006 -p 14007:14007 -p 14008:14008 --name=uistart ui2  /bin/sh

Это создаст контейнер, но мы покажем, что он вышел, когда я сделаю

docker ps -a

когда я проверяю логи докера по

docker logs

ничего не покажет

как запустить этот скрипт, чтобы все мои серверы пользовательского интерфейса работали, когда я запускаю Docker. Я не хочу делать docker exec -it uistart /bin/sh, а затем запускать скрипт оболочки вручную.

1 Ответ

0 голосов
/ 18 января 2019

Это создаст контейнер, но мы покажем, что он вышел, когда я сделаю docker ps

Это означает, что ваш скрипт запускает сервер ... немедленно завершается.

Поскольку этот сценарий является главной точкой входа вашего контейнера, если он останавливается и выходит, все контейнеры останавливаются и выходят.

Вы должны убедиться, что ваш скрипт запускает сервер, а затем подождать, как основной процесс переднего плана. (например с использованием супервизора )

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