여기 내 문제 :는 고정 표시기 구성 - 액세스 데이터를 컨테이너 A에서 컨테이너 B에
내가 컨테이너 A (Node.js를) 및 컨테이너 B (의 nginx)가이. 컨테이너 A의 Dockerfile에서 서버를 build
폴더로 실행하는 데 필요한 여러 소스 파일을 빌드합니다. 정적 파일을 제공하기 위해 컨테이너 B에서이 폴더에 액세스하려고합니다.
간단한 워크 플로를 사용하면 소스가있는 저장소를 복제하고 docker-compose up --build
을 실행하여 모든 작업을 실행할 수 있습니다. 이 시나리오에서 호스트는 파일을 빌드하는 데 필요한 소프트웨어가 없기 때문에 도커 컨테이너 내부에서 빌드를 수행해야합니다.
거의 작품은 다음을이었다 내 첫 번째 시도 :
내가 처음 건설version: "2"
services:
nginx:
volumes_from:
- node
node:
volumes:
- /code/build
고정 표시기의 작성 &까지 모든 것을 구축이 잘 작동하는 듯, 컨테이너는 그 안에 빌드 파일 컨테이너 A에서 생성된다 컨테이너 B는 예상대로 액세스 할 수 있습니다.
그러나 소스가 업데이트 될 때 문제가 발생합니다. 이런 일이 발생하면 기존 컨테이너에 우선 순위가있는 것처럼 새 빌드 파일이 컨테이너 내부의 기존 파일을 대체하지 않습니다. 그래서 처음으로 컨테이너 A와 B 모두에 대해 오래된 파일이 있습니다.
docker-compose build
을 실행할 때마다 볼륨을 처음부터 다시 만들도록했지만 아무 것도 찾지 못했습니다. 내가 찾은 유일한 것은 docker-compose stop && docker-compose rm
을 사용하는 것이지만 매번 그렇게하기에는 약간의 해킹 일뿐 아니라 기존 컨테이너를 docker-compose up
으로 새 컨테이너로 교체하는 것과 비교하면 상당히 긴 다운 타임이 발생합니다.
달성하려는 목표를 달성하기위한 적절한 해결책이 있습니까?
시도해 보셨습니까? 장기적으로 최선의 방법은 가능한 경우 이들을 분리하려고 시도하는 것입니다. – ldg
나는'build'를 시도한 다음'up'과'--build up'을 시도하고 그 결과는 같고, 오래된 컨테이너는 유지되고 새로운 빌드 파일에 의해 덮어 쓰여지지 않습니다. – Mijamo