찾다

 >  Q&A  >  본문

flask - 为什么每次当我workdir所对应的文件的内容发生变化,要重新build images,然后生成container才会生效

dockerfile没有改变,只是workdir所对应的容器外部的文件发生了改变

  1. 请问这是必须的么,如果是这样的话,是要用docker compose-up 自动简化这个过程?

  2. 如果不是必须的话,因为我的dockerfile的问题么?
    dockerfile如下:

    FROM ubuntu
    MAINTAINER Tarty.Phoenix <tartyphoenix@gmail.com>
    RUN apt-get update
    RUN apt-get install -y -q python-all python-pip libffi-dev
    RUN apt-get install -y -q python-dev build-essential
    ADD ./flask_pure/requirements.txt /tmp/requirements.txt
    RUN pip install -qr /tmp/requirements.txt
    
    ADD ./flask_pure /opt/flask_pure/
    WORKDIR /opt/flask_pure
    
    EXPOSE 80
    CMD ["python", "manage.py", "runserver"]
大家讲道理大家讲道理2775일 전540

모든 응답(3)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-24 09:12:59

    1. 우선 workdir이 나타내는 디렉터리는 호스트가 아닌 컨테이너 내의 디렉터리입니다.

    2. 다음 콘텐츠 변경에는 이미지를 다시 작성해야 합니다

      • Dockerfile 자체가 변경됩니다

      • COPY/ADD 지침에 대한 소스 파일 변경

    3. docker-compose는 작업 중 이미지 재구축을 지원합니다

      으아악

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-24 09:12:59

    귀하의 질문에 설명해야 할 점이 하나 있습니다.
    dockerfile을 생성하고 편집한 후 빌드는 이미지(미러)를 생성한 다음 이미지를 실행하여 컨테이너(컨테이너)를 생성합니다. 그러면 이미지와 컨테이너는 일대일 대응을 갖습니다. 그런 다음 dockerfile을 편집하고 작업 디렉터리를 변경하면 생성한 컨테이너는 물론 기본적으로 새 작업 디렉터리를 입력합니다. 따라서 질문 제목은 질문을 설명하는 것이 아니라 올바른 논리적 설명이어야 합니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-24 09:12:59

    docker에 대한 이해가 잘못되었습니다. 특정 폴더의 내용을 이미지로 패키징하는 것뿐입니다.
    docker의 VOLUME 볼륨 개념을 이해하는 것이 좋습니다. 컨테이너 시작 시 -v 매개변수를 지정하거나 docker-compose.yml에 VOLUME 매개변수를 지정해야만 컨테이너가 로컬 디렉터리를 마운트할 수 있습니다.

    그렇다면 컨테이너를 로컬 디렉터리에 마운트해야 하는지 어떻게 구별할 수 있나요? 개발 상태인지 생산 상태인지 알 수 있습니다.
    개발 상태이고 코드를 자주 변경해야 하는 경우, 코드가 수정될 때마다 이미지로 다시 패키징해야 한다는 사실을 받아들이기 어렵습니다.
    프로덕션 중인 경우 Docker Hub가 너무 많은 이미지를 제공한다고 상상해 보세요. 이러한 이미지가 설치 환경과 소스 코드를 제공하는 경우 소스 코드 디렉터리를 마운트하려면 VOLUME을 수동으로 지정해야 합니다. 컨테이너가 컴파일되고 설치됩니다. 이 경험에 대해 어떻게 생각하시나요?

    회신하다
    0
  • 취소회신하다