Мой контейнер Docker вытаскивает мое приложение Node из Git и устанавливает необходимые зависимости. Однако эта логика повторно запускается при последующих вызовах запуска Docker после первоначального запуска. Есть ли способ настроить мой сценарий Entrypoint, чтобы вытащить приложение из Git, когда вызывается Docker? Я предполагаю, что всегда могу написать файл в контейнер после того, как начальная настройка будет завершена и проверить этот файл, прежде чем вытащить из Git? Есть ли лучший и более чистый способ добиться такого поведения?Node Docker Container - Caching Container Startup Logic
Dockerfile:
# Generic Docker Image for Running Node app from Git Repository
FROM node:0.10.33-slim
ENV NODE_ENV production
# Add script to pull Node app from Git and run the app
COPY docker-node-entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 8080
CMD ["--help"]
Entrypoint сценарий:
#!/bin/bash
set -e
# Run the command passed in if it isn't to start a node app
if [ "$1" != 'node-server' ]; then
exec "[email protected]"
fi
# Logic for pulling the node app and starting it
cd /usr/src
# try to remove the repo if it already exists
rm -rf node-app; true
echo "Pulling Node app's source from $2"
git clone $2 node-app
cd node-app
# Check if we should be running a specific commit from the git repo
if [ ! -z "$3" ]; then
echo "Changing to commit $3"
git checkout $3
fi
npm install
echo "Starting the app"
exec node .
Я понимаю, что создание источника в контейнере Docker является обычно рекомендуемым способом и понять, как работает узел: onbuild. Я экспериментирую с этим подходом, так как я не хочу вставлять свой источник в контейнер, сохраненный на концентраторе докеров. Кроме того, у меня много узлов-микросервисов, и я не хочу иметь дело с множеством разных контейнеров. Я бы предпочел, чтобы я только один раз использовал его. Недостатком является то, что запуск займет больше времени (для вытягивания зависимостей и файлов приложений), но на основе моих текущих экспериментов это довольно быстро. – AnDev123