Docker Compose-여러 컨테이너간에 명명 된 볼륨 공유
docker-compose 및 v3을 사용하고 있습니다. Docker에 볼륨을 마운트하려고합니다.
./appdata:/appdata
이 볼륨을 볼륨으로 한 다음 여러 컨테이너에서 해당 볼륨을 참조하고 싶습니다. 볼륨 구성 참조 만 도시 data-volume:
없는 값으로 명명 된 볼륨으로, 그것은 위처럼 보이지 않도록.
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- app-volume
php:
build: ./php/
expose:
- 9000
volumes:
- app-volume
volumes:
app-volume: ./appdata:/appdata
이것은 나에게 준다 :
오류 : './docker-compose.yml'파일에서 'app-volume'볼륨은 문자열이 아닌 매핑이어야합니다.
분명히 volumes
키 / 값 쌍 을 변경해야한다는 것을 알고 있지만 서비스간에 볼륨을 공유 할 수 있도록이를 변경 하는 방법 을 잘 모르겠습니다 .
나는 또한 체크 아웃 volumes_from
했지만 이것은 효과적으로 다른 컨테이너로부터 상속을 허용합니다. 나는 누군가가 volumes_from
원하는 매핑을 포함하는 다른 컨테이너에서 사용 하는 것을 보았지만 command: true
컨테이너가 실제로 실행되지 않도록 설정하면 나에게는 해킹처럼 보입니다.
어떻게 할 수 있습니까?
참고, 내가 할 다음과 같은 작업이 :
nginx:
volumes:
- ./appdata:/appdata
php:
volumes:
- ./appdata:/appdata
그러나 그것은 단지 복제이며 명명 된 볼륨이 나를 피하는 데 도움이 될 수 있기를 바랍니다. :-)
명명 된 볼륨은 다음과 같은 방법으로 컨테이너간에 공유 할 수 있습니다.
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- app-volume: location_in_the_container
php:
build: ./php/
expose:
- 9000
volumes:
- app-volume: location_in_the_container
volumes:
app-volume:
다음은 더 나은 이해를 위해 사용하는 예제 구성입니다. web
컨테이너 에서 생성 된 정적 파일 을라는 명명 된 볼륨에 노출 한 다음 컨테이너에서 static-content
읽고 제공합니다 nginx
.
services:
nginx:
container_name: nginx
build: ./nginx/
volumes:
- static-content:/usr/src/app
web:
container_name: web
env_file: .env
volumes:
- static-content:/usr/src/app/public
environment:
- NODE_ENV=production
command: npm run package
volumes:
static-content:
This solves it without using named volumes:
volumes:
- ./appdata:/appdata
So, it looks like:
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- ./appdata:/appdata
php:
build: ./php/
expose:
- 9000
volumes:
- ./appdata:/appdata
'code' 카테고리의 다른 글
단일 명세서에 대한 트랜잭션은 무엇을합니까? (0) | 2020.11.25 |
---|---|
Cassandra 데이터 모델을 설계 할 때 가장 좋은 방법은 무엇입니까? (0) | 2020.11.25 |
두 숫자의 해시 코드 만들기 (0) | 2020.11.24 |
하노이 타워 : 재귀 알고리즘 (0) | 2020.11.24 |
C와 Python-모듈로 (%) 연산의 다른 동작 (0) | 2020.11.24 |