My Docker 컨테이너가 Git에서 내 노드 응용 프로그램을 가져오고 필요한 종속성을 설치합니다. 그러나이 논리는 초기 실행 후 Docker Start에 대한 후속 호출에서 다시 실행됩니다. Docker가 실행될 때 Git에서 앱을 가져 오도록 Entrypoint 스크립트를 설정할 수있는 방법이 있습니까? 나는 초기 설정이 완료된 후 컨테이너에 파일을 작성하고 Git을 가져 오기 전에 파일을 검사 할 수 있다고 가정하고있다. 이 행동을 성취하기 위해 더 좋고 깨끗한 방법이 있습니까?노드 도커 컨테이너 - 캐싱 컨테이너 시작 논리
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"]
진입 점 스크립트
#!/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 컨테이너에 소스를 빌드하는 것이 일반적으로 권장되는 방법이며 node : onbuild가 작동하는 방식을 이해합니다. 도커 허브에 저장된 컨테이너에 소스를 포함시키고 싶지 않기 때문에이 방법을 실험하고 있습니다. 또한 노드 마이크로 서비스가 많고 많은 컨테이너를 다루고 싶지 않습니다. 나는 하나만 재사용하는 것을 선호한다. 단점은 시작이 (의존성과 응용 프로그램 파일을 가져 오는 데) 더 오래 걸릴 것이지만 현재의 실험을 보면 꽤 빠르다는 것입니다. – AnDev123