docker разархивировать файл при запуске - PullRequest
0 голосов
/ 29 февраля 2020

Вот мои Dockerfiles, которые работают, но мой образ тяжелый. Я хотел бы распаковать только на старте! Как я могу это сделать? Я хотел бы выполнить dockerStatScript.sh только на старте, и после "pm2-runtime", "pm2_conf.json"

я должен попробовать все ... Я не понимаю

спасибо за вашу помощь


FROM keymetrics/pm2:12-alpine

RUN apk add --no-cache --upgrade bash && \
    apk add postgresql-libs libpq zip unzip tree

WORKDIR /app

COPY docker/dockerStatScript.sh .

RUN chmod +x dockerStatScript.sh

ENV NODE_ENV=production

COPY app_prod/build/2.6.3/app.zip Zapp.zip
COPY app_prod/build/2.6.3/node_modules.zip Znode_modules.zip
COPY app_prod/build/2.6.3/config.zip Zconfig.zip

RUN ["/bin/bash","dockerStatScript.sh"]

CMD [ "pm2-runtime", "pm2_conf.json" ]

EXPOSE 8080

1 Ответ

0 голосов
/ 29 февраля 2020

Чтобы сжать изображение, используйте

docker image build --compress {rest-of-the-build-arguments-here}

для запуска dockerStatScript.sh после "pm2-runtime", "pm2_conf.json", вам нужно будет создать скрипт оболочки типа startup.sh с содержимым

./pm2-runtime.sh pm2_conf.json
./dockerStatScript.sh

add это к изображению docker, как вы сделали для dockerStatScript.sh. то есть

COPY docker/startup.sh .
RUN chmod +x startup.sh

и затем заменить их:

RUN ["/bin/bash","dockerStatScript.sh"]
CMD [ "pm2-runtime", "pm2_conf.json" ]

на это:

ENTRYPOINT ["/bin/bash","/app/startup.sh"]

и запустить контейнер без параметров, поскольку точка входа переходит в «запуск». sh "при каждом запуске контейнера.

Вот полезная ссылка, которая объясняет параметры запуска:

https://dev.to/lasatadevi/docker-cmd-vs-entrypoint-34e0.

надеюсь, я не сделал не делайте опечаток:)

ОБНОВЛЕНИЕ:

вы можете использовать ENTRYPOINT ["/bin/bash","/app/startup.sh"]

или

CMD ["/bin/bash","/app/startup.sh"]

или опустите точку входа и cmd и просто запустите контейнер с /app/startup.sh в качестве параметра. то есть docker run image-name "/app/startup.sh" - я обычно использую этот wa, потому что он дает больше гибкости для запуска во время отладки.

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

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