2017-04-26 1 views
0

docker로 실행중인 일부 컨테이너가 있습니다. 컨테이너를 제거하고 다시 만들지 않고 컨테이너를 올바르게 업데이트 할 수있는 방법을 찾을 수 없습니다. Python 앱이 있고 코드 변경 사항을 성공적으로 배포 할 수 있으며 적용됩니다. 그러나 CSS, js 또는 이미지와 같은 파일을 추가하면 컨테이너에 전달되지 않습니다.Docker Docker 내용을 업데이트하지 않음으로 작성하십시오.

docker-compose build --no-cache web && docker-compose up -d 

나를 위해 작동하는 유일한 명령은 다음과 같습니다

내가 콘솔에서 예상 (NO 캐시를 재 구축)로 메시지를 기록에도 불구하고,이 명령을 시도했다 나는 아무에게 아무 성공도 없었다 이처럼 제거 : 다음

docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) && docker rmi $(docker images -a -q) 

을 그리고 구축 및 배포 :

docker-compose build && docker-compose up -d 

여기 내 할 일이다 cker-compose.yml는 :

web: 
    restart: always 
    build: ./web 
    expose: 
    - "8000" 
    links: 
    - postgres:postgres 
    - redis 
    volumes: 
    - /usr/src/app/donare/static 
    env_file: .env 
    command: /usr/local/bin/gunicorn -w 2 -b :8000 --limit-request-line 16384 donare.app:app 

nginx: 
    restart: always 
    build: ./nginx/ 
    ports: 
    - "80:80" 
    volumes: 
    - /www/static 
    volumes_from: 
    - web 
    links: 
    - web:web 

data: 
    restart: always 
    image: postgres:latest 
    volumes: 
    - /var/lib/postgresql 
    command: "true" 

postgres: 
    restart: always 
    build: . 
    dockerfile: dockerfile-postgres 
    volumes_from: 
    - data 
    ports: 
    - "5432:5432" 

redis: 
    image: redis 

celery: 
    build: ./web 
    command: celery worker --app=donare.tasks.tasks 
    volumes: 
    - .:/code 
    links: 
    - postgres 
    - redis 

답변

0

귀하의 도커 작성 파일을 사용하면 web 컨테이너에 명명 된 볼륨을 가지고 있음을 보여준다. /usr/src/app/donare/static css, js 및 이미지가 Docker 호스트에서 가져온 것으로 추정되는 곳입니까? 그렇다면 /usr/src/app/donare/static을 컨테이너에 마운트하고 해당 이름의 볼륨을 만들지 않으려 고하셨습니까? 또는 css, js 및 이미지가 이미지에 내장 된 경우 이름이 지정된 볼륨을 제거해야합니다.

css, js 및 이미지가 컨테이너의 /usr/src/app/donare/static 경로에 있다고 가정하면 이름이 지정된 볼륨이 있기 때문에 처음으로 web 서비스를 실행하면 볼륨이 만들어지고 초기화됩니다 해당 경로의 내용으로 buildup을 실행할 때마다 동일한 초기 볼륨이 이전 파일의 경로에 마운트됩니다. stoprm 일 때 볼륨이 암시 적으로 삭제되어 새로운 파일로 다시 만들어지고 초기화됩니다.

관련 문제