docker_compose.yml의 링크와 dependent_on 간의 차이
도커 컴포지트의 컴포지트 파일 문서에 따르면:
depends_on
서비스 간의 종속성을 나타냅니다.links
다른 서비스의 컨테이너에 연결하고 dependent_on과 동일한 방식으로 서비스 간의 종속성을 표현합니다.
나는 다른 컨테이너와 링크하는 목적을 이해하지 못해서 두 가지 옵션의 차이가 여전히 나에게는 꽤 어려운 것 같습니다.
예시가 있다면 훨씬 쉬울 텐데, 찾을 수가 없어요.
저는 B 컨테이너를 A 컨테이너와 연결하면 B 컨테이너가 A 컨테이너의 셸 내부에서 "핑 가능"하게 된다는 것을 알게 되었습니다.
도망친ping B
A 용기 bash
그리고 다음과 같은 결과를 얻었습니다(참고로, 인터넷 이미지).
게시물은 다음 이후 업데이트가 필요합니다.links
옵션이 더 이상 사용되지 않습니다.
기적으로본,links
변수를 하여 다른 할 수 있도록 으로 포함되어 있으므로 더 이상 .network
컨테이너가 동일한 네트워크에 배치되면 컨테이너 이름과 다른 별칭을 호스트로 사용하여 서로 연결할 수 있습니다.
위해서docker run
,--link
또한 더 이상 사용되지 않으므로 사용자 지정 네트워크로 대체해야 합니다.
docker network create mynet
docker run -d --net mynet --name container1 my_image
docker run -it --net mynet --name container1 another_image
depends_on
순서 순서를 표현하는데, ▁effect▁side▁of),▁good▁expresses▁pulling▁order를▁a▁start▁(▁was▁order그다▁which시작and니(ly습부의 좋은 부작용이었습니다.links
.
이 답변은 도커 합성 버전 2를 위한 것이며 버전 3에서도 작동합니다.
depends_on을 사용해도 데이터에 액세스할 수 있습니다.
도커 문서 도커 컴포지트 및 장고를 보면 여전히 다음과 같이 데이터베이스에 액세스할 수 있습니다.
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
링크와 의존_의 차이점은 무엇입니까?
링크:
데이터베이스에 대한 컨테이너를 작성할 때 예를 들어 다음과 같습니다.
docker run -d --name=test-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" -P mysql
docker inspect d54cf8a0fb98 |grep HostPort
그리고 당신은 찾을지도 모릅니다.
"HostPort": "32777"
즉, 로컬 호스트 포트 327777(컨테이너 내 3306)에서 데이터베이스를 연결할 수 있지만 이 포트는 컨테이너를 다시 시작하거나 제거할 때마다 변경됩니다.따라서 링크를 사용하여 데이터베이스에 항상 연결하고 데이터베이스가 어떤 포트인지 알 필요가 없는지 확인할 수 있습니다.
web:
links:
- db
의존_:
Giorgio Feraris Docker-compose.yml: V1부터 V2까지 멋진 블로그를 찾았습니다.
Docker-compose가 V2 파일을 실행하면 파일에 정의된 모든 컨테이너 간에 네트워크가 자동으로 구축되며, 모든 컨테이너는 Docker-compose.yml 파일에 정의된 이름만 사용하여 다른 컨테이너를 즉시 참조할 수 있습니다.
그리고.
따라서 링크는 더 이상 필요하지 않습니다. 링크는 DB 컨테이너와 웹 서버 컨테이너 간의 네트워크 통신을 시작하는 데 사용되었지만, 이는 이미 도커 합성에 의해 수행되었습니다.
갱신하다
에 의존하는
서비스 간의 종속성을 표현합니다. 두 가지 효과가 있습니다.
docker-compose up
서비스를 종속성 순서로 시작합니다.다음 예제에서는 db 및 redis가 웹보다 먼저 시작됩니다.docker-compose up SERVICE
SERVICE의 종속성이 자동으로 포함됩니다.다음 예제에서는 도커 합성 웹도 db 및 redis를 만들고 시작합니다.
간단한 예:
version: '2'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
참고: depends_on은 웹을 시작하기 전에 db 및 redis가 "ready"될 때까지 기다리지 않습니다.서비스가 준비될 때까지 기다려야 하는 경우 이 문제와 해결 방법에 대한 자세한 내용은 시작 순서 제어를 참조하십시오.
[2016년 9월 업데이트]:이 답변은 아래 샘플 작성 파일에 표시된 것처럼 도커 작성 파일 v1을 대상으로 했습니다.v2의 경우 @Windsoon의 다른 답변을 참조하십시오.
[원문답]:
그것은 문서에서 꽤 명확합니다.depends_on
의존성과 컨테이너 생성 순서를 결정하고 이것들뿐만 아니라
연결된 서비스의 컨테이너는 별칭과 동일한 호스트 이름으로 연결하거나 별칭이 지정되지 않은 경우 서비스 이름으로 연결할 수 있습니다.
를 들어,과 같이 하면, 다 과 같 가 합 니 정 다 이 들 어 음 예docker-compose.yml
파일 이름:
web:
image: example/my_web_app:latest
links:
- db
- cache
db:
image: postgres:latest
cache:
image: redis:latest
와 함께links
내부의 web
는 를사하여데액수있할습다니세스에를 수 있습니다.db:5432
포트 트포어가있정다니합다고에 합니다.db
이미지. 만약에depends_on
사용되었지만, 이것은 불가능하지만, 컨테이너의 시작 순서는 정확합니다.
에 대한 0에 을 기반으로 생각합니다. v1.27.0의 긴 할 수 있게 . 이제는 다음과 같은 긴 형식을 허용합니다.depends_on
:
https://github.com/compose-spec/compose-spec/blob/master/spec.md#long-syntax-1
이 긴 형식으로 서비스가 시작되거나 정상 상태이거나 완료될 때까지 기다리도록 지정할 수 있습니다.
도커 컴포지트는 당신이 생산한다면 서비스가 정상이라는 것을 알고 있습니다.health_check
해당 서비스에서:
https://github.com/compose-spec/compose-spec/blob/master/spec.md#healthcheck
자세한 내용은 설명서의 예제를 참조하십시오. 위의 링크를 참조하십시오!
다음은 통합 테스트를 위해 작성 파일에서 사용한 내용입니다.
services:
cloud-broker:
image: my.docker.registry/activemq-artemis:latest
healthcheck:
test: ["CMD-SHELL", "wget http://localhost:8161/ --delete-after --tries=3 2> /dev/null"]
interval: 10s
timeout: 5s
retries: 5
postgresql:
image: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
environment:
POSTGRES_PASSWORD: "<my-secret>"
POSTGRES_USER: "postgres"
POSTGRES_DB: "postgres"
# This service calls a script to create an empty database and the service-user
postgresql-setup:
image: postgres
depends_on:
postgresql:
condition: service_healthy
restart: "no"
volumes:
- "./scripts:/scripts"
environment:
PGPASSWORD: "<my-secret>"
entrypoint: "psql -U postgres -d postgres -h postgresql -f /scripts/create-db.sql"
my-business-service:
image: my.docker.registry/my-business-service:latest
depends_on:
cloud-broker:
condition: service_healthy
postgresql-setup:
condition: service_completed_successfully
언급URL : https://stackoverflow.com/questions/35832095/difference-between-links-and-depends-on-in-docker-compose-yml
'programing' 카테고리의 다른 글
C#에서 문자열 인코딩 결정 (0) | 2023.08.18 |
---|---|
div 요소 내에서 이미지를 수평으로 중앙에 배치하는 방법은 무엇입니까? (0) | 2023.08.13 |
마우스를 한 번 클릭하여 모든 DIV 텍스트 선택 (0) | 2023.08.13 |
서로 다른 두 Get-ChildItem 호출의 결과를 단일 변수로 결합하여 동일한 처리를 수행합니다. (0) | 2023.08.13 |
콤보 상자에서 선택한 항목의 색인을 찾으려면 어떻게 해야 합니까? (0) | 2023.08.13 |