2014-12-04 4 views
-1

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 . 

답변

1

이 이상적으로, 노드 프로젝트의 각 자체 Dockerfile있을 것입니다, 그래서보다는 git clonedocker run에 시간을 defering 것은, 당신이 컨테이너를 만들 것 완전히 설치되어 실행할 준비가되었습니다. 당신이 자동으로 너무 노드 응용 프로그램을 실행하는 기본 것이다

FROM node:onbuild에 변화를 포함하여 자식의 repo의 각각에 Dockerfile를 추가 할 수

의 가능성.

+0

Docker 컨테이너에 소스를 빌드하는 것이 일반적으로 권장되는 방법이며 node : onbuild가 작동하는 방식을 이해합니다. 도커 허브에 저장된 컨테이너에 소스를 포함시키고 싶지 않기 때문에이 방법을 실험하고 있습니다. 또한 노드 마이크로 서비스가 많고 많은 컨테이너를 다루고 싶지 않습니다. 나는 하나만 재사용하는 것을 선호한다. 단점은 시작이 (의존성과 응용 프로그램 파일을 가져 오는 데) 더 오래 걸릴 것이지만 현재의 실험을 보면 꽤 빠르다는 것입니다. – AnDev123