2016-08-22 5 views
1

Docker에서 간단한 Flask 애플리케이션을 실행하려고합니다. 하지만 내 app.py 코드를 업데이트하고 도커 컨테이너를 다시 시작하지 않아도 마찬가지입니다.Docker의 앱이 업데이트되지 않습니다.

나는 OS X에서 도커를 실행 중입니다.이게 내가 누락되었거나 예상 한 동작일까요?

이 내 docerfile이 모습입니다 :

FROM ubuntu:14.04.3 

# install dependencies 
RUN apt-get update 
RUN apt-get install -y nginx 
RUN apt-get install -y supervisor 
RUN apt-get install -y python3-pip 

# update working directories 
ADD ./app /app 
ADD ./config /config 
ADD requirements.txt/

# install dependencies 
RUN pip3 install -r requirements.txt 

# setup config 
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf 
RUN rm /etc/nginx/sites-enabled/default 

RUN ln -s /config/nginx.conf /etc/nginx/sites-enabled/ 
RUN ln -s /config/supervisor.conf /etc/supervisor/conf.d/ 

EXPOSE 80 
CMD ["supervisord", "-n"] 
+1

도커 컨테이너를 어떻게 다시 시작 하시겠습니까? – pts

+0

@pts 나는'docker run -p 80:80 app'을 닫고 다시 시작하려고 컨테이너를 멈추었다가 다시 시작하려고 시도했다. 컨테이너를 다시 시작하기 위해 UI를 사용하는 곳에서도 kitematic과 동일한 방법을 시도했습니다. – Jonathan

답변

4

도커 이미지 (당신이 docker build -t app . 무엇을 얻을 수 있는지)에 "동결"스냅 샷입니다. 편집 할 수 없습니다. 해당 시점의 이미지에 추가 한 내용의 스냅 샷입니다.

이제 이미지를 실행하면 내용이 확장되고 (아카이브가 압축 해제 된 것처럼 생각한 후) 이미지에 정의한 프로세스가 실행됩니다. 이것은 컨테이너입니다.

실행중인 컨테이너는 docker ps으로 표시 할 수 있으며 이미지 (새 컨테이너를 실행하는 데 사용할 수있는 것)는 docker images입니다.

컨테이너는 파일 시스템에 쓸 수 있지만 기본적으로 컨테이너가 중지되면 모든 변경 사항이 손실됩니다. 이러한 변경 사항은 이미지에 다시 저장되지 않습니다.

이미지는 다시 빌드하고 컨테이너는 시작된 이미지를 계속 사용합니다. 당신의 app.py를 가져 오는 당신의 Dockerfile 방법으로 그래서, 당신은 그 파일을 업데이트하려면 다음을 실행해야합니다 :

docker build -t app . 
docker stop <container_id> 
docker rm <container_id> 
docker run -p 80:80 -d --name=my-app app 

당신은 당신의 현재 컨테이너 ID를 얻을 수 docker ps -a를 실행해야합니다. 컨테이너의 이름을 지정하면 "my-app"또는 앞으로 선택하는 다른 이름으로 컨테이너를 참조 할 수 있습니다.

업데이트가 느린 방법임을 유의하십시오. 보다 효율적인 개발을위한 (맥 OS와 함께, 이것은 아래/사용자 위치해야합니다) 볼륨을 사용

이제
docker run -p 80:80 -v $(pwd)/app:/app -d --name=my-app app 

, 언제 앱 폴더를 업데이트하면 자동 새로 고침이없는 그것을 가정 파이썬을 다시 시작할 수 있습니다 포함 :

docker restart my-app 
+0

안녕하세요 @BMitch, 제거하는 것이 도움이된다고 생각합니다. '$ (pwd)/app :/app'을 추가했지만 앱이 새로 고침되지 않습니다. 그 일을 더 쉽게 수행 할 수있는 방법을 알고 있습니까? – Jonathan

+0

_image_를 다시 작성한 다음 _container_를 실행해야합니다. –

+2

@BMitch - 훌륭한 답변에 배경을 추가했습니다. 희망 사항에 따라 OP에 대한 내용이 정리됩니다. –

관련 문제