서비스
CI/CD job 컨테이너에 연결되는 추가 서비스 컨테이너를 설정하고 사용하는 방법을 설명합니다.
CI/CD를 구성할 때는 이미지를 지정하며, 이 이미지는 job이 실행되는 컨테이너를 생성하는 데 사용됩니다. 이 이미지를 지정하려면 image 키워드를 사용합니다. services 키워드를 사용하면 추가 이미지를 지정할 수 있습니다. 이 추가 이미지는 첫 번째 컨테이너에서 사용할 수 있는 또 다른 컨테이너를 생성하는 데 사용됩니다. 두 컨테이너는 서로 접근할 수 있으며 job을 실행하는 동안 통신할 수 있습니다. 서비스 이미지는 어떤 애플리케이션이든 실행할 수 있지만, 가장 일반적인 사용 사례는 다음과 같이 데이터베이스 컨테이너를 실행하는 것입니다. MySQL PostgreSQL Redis JSON API를 제공하는 마이크로서비스의 예시로 GitLab Warning 서비스 간 네트워킹을 활성화하려면 FF_NETWORK_PER_BUILD 를 true 로 설정합니다. 이 플래그가 없으면 서비스가 제대로 작동하지 않을 수 있습니다. 자세한 내용은 feature flags 를 참고합니다. 저장소로 데이터베이스를 사용하는 콘텐츠 관리 시스템을 개발한다고 가정해 보겠습니다. 애플리케이션의 모든 기능을 테스트하려면 데이터베이스가 필요합니다. 이런 상황에서는 데이터베이스 컨테이너를 서비스 이미지로 실행하는 것이 적합한 사용 사례입니다. 프로젝트를 빌드할 때마다 mysql 을 설치하는 대신 기존 이미지를 사용해 추가 컨테이너로 실행합니다. 데이터베이스 서비스만 사용할 수 있는 것은 아닙니다. 필요한 만큼 .gitlab-ci.yml 에 서비스를 추가하거나 config.toml 을 직접 수정할 수 있습니다. Docker Hub 나 프라이빗 컨테이너 레지스트리에서 찾은 모든 이미지를 서비스로 사용할 수 있습니다. 프라이빗 이미지 사용에 대한 자세한 내용은 프라이빗 컨테이너 레지스트리에서 이미지 접근 을 참고합니다. 서비스는 CI 컨테이너 자체와 동일한 DNS 서버, 검색 도메인, 추가 호스트를 상속받습니다. job에 서비스가 연결되는 방식 # 컨테이너 링킹이 작동하는 방식을 더 잘 이해하려면 컨테이너 연결하기 를 참고합니다. 애플리케이션에 mysql 을 서비스로 추가하면 해당 이미지는 job 컨테이너에 연결된 컨테이너를 생성하는 데 사용됩니다. MySQL의 서비스 컨테이너는 mysql 호스트 이름으로 접근할 수 있습니다. 데이터베이스 서비스에 접근하려면 소켓이나 localhost 대신 mysql 이라는 호스트에 연결합니다. 자세한 내용은 서비스 접근하기 를 참고합니다. 서비스 상태 확인(health check)이 작동하는 방식 # 서비스는 네트워크로 접근 가능한 추가 기능을 제공하도록 설계되어 있습니다. MySQL이나 Redis 같은 데이터베이스일 수도 있고, Docker-in-Docker(DinD)를 사용할 수 있게 해주는 docker:dind 일 수도 있습니다. CI/CD job을 진행하는 데 필요하면서 네트워크로 접근하는 것이라면 사실상 무엇이든 가능합니다. 이를 보장하기 위해 러너는 다음을 수행합니다. 컨테이너에서 기본적으로 노출되는 포트를 확인합니