서비스
서비스에 대해 설명합니다.
CI/CD를 구성할 때, 잡이 실행되는 컨테이너를 만드는 데 사용되는 이미지를 지정합니다. 이 이미지를 지정하려면 image 키워드를 사용합니다. services 키워드를 사용하여 추가 이미지를 지정할 수 있습니다. 이 추가 이미지는 첫 번째 컨테이너에서 사용할 수 있는 또 다른 컨테이너를 만드는 데 사용됩니다. 두 컨테이너는 서로 접근할 수 있으며 잡 실행 중에 통신할 수 있습니다. 서비스 이미지는 어떤 애플리케이션이든 실행할 수 있지만, 가장 일반적인 사용 사례는 다음과 같이 데이터베이스 컨테이너를 실행하는 것입니다: MySQL PostgreSQL Redis JSON API를 제공하는 마이크로서비스 예제로서의 GitLab 저장소에 데이터베이스를 사용하는 콘텐츠 관리 시스템을 개발하고 있다고 생각해보세요. 애플리케이션의 모든 기능을 테스트하려면 데이터베이스가 필요합니다. 이런 시나리오에서 데이터베이스 컨테이너를 서비스 이미지로 실행하는 것이 좋은 사용 사례입니다. 프로젝트를 빌드할 때마다 mysql 을 설치하는 대신 기존 이미지를 사용하여 추가 컨테이너로 실행하세요. 데이터베이스 서비스에만 제한되지 않습니다. .gitlab-ci.yml 에 필요한 만큼 서비스를 추가하거나 config.toml 을 수동으로 수정할 수 있습니다. Docker Hub 또는 개인 컨테이너 레지스트리에서 찾을 수 있는 모든 이미지를 서비스로 사용할 수 있습니다. 개인 이미지 사용에 대한 자세한 내용은 개인 컨테이너 레지스트리에서 이미지 접근 을 참조하세요. 서비스는 CI 컨테이너와 동일한 DNS 서버, 검색 도메인 및 추가 호스트를 상속합니다. 서비스가 잡에 연결되는 방법 # 컨테이너 연결 방법을 더 잘 이해하려면 컨테이너 함께 연결하기 를 읽어보세요. 애플리케이션에 mysql 을 서비스로 추가하면 해당 이미지가 잡 컨테이너에 연결된 컨테이너를 만드는 데 사용됩니다. MySQL의 서비스 컨테이너는 호스트 이름 mysql 로 접근할 수 있습니다. 데이터베이스 서비스에 접근하려면 소켓 또는 localhost 대신 mysql 이라는 호스트에 연결하세요. 서비스 접근 에서 더 읽어보세요. 서비스 헬스 체크 방법 # 서비스는 네트워크 접근 가능한 추가 기능을 제공하도록 설계되었습니다. MySQL 또는 Redis 같은 데이터베이스일 수도 있고, Docker-in-Docker(DinD)를 사용할 수 있게 해주는 docker:dind 일 수도 있습니다. CI/CD 잡 진행에 필요한 거의 모든 것이 될 수 있으며, 네트워크를 통해 접근합니다. 이 작업이 제대로 동작하도록 러너는: 기본적으로 컨테이너에서 노출되는 포트를 확인합니다. 이러한 포트에 접근할 수 있을 때까지 대기하는 특수 컨테이너를 시작합니다. 검사의 두 번째 단계가 실패하면 경고를 출력합니다: *** WARNING: Service XYZ probably didn't start properly . 이 문제는 다음과 같은 이유로 발생할 수 있습니다: 서비스에 열린 포트가 없는 경우. 서비스가 타임아웃 전에 올바르게 시작
