Docker 이미지를 관리하는 서버를 Registry 라고 부른다.
https://docs.docker.com/registry/
이 서버를 구축하여 backend, frontend를 이미지로 빌드하여 Github Action에서 push 하고 deploy 서버에서 사용할 예정이다.
Docker Registry에서 ssl 인증을 사용할 수 있는데, 사용하지 않는 경우에는 docker daemon 설정을 바꾸어야 한다.
/etc/docker/daemon.json
보통 이 파일에
{
"insecure-registries" : ["docker-registry:5000"]
}
를 입력하게 된다.
sudo systemctl restart docker
로 Docker 서비스를 재 시작하면 해당 설정이 적용된다.
Nginx를 이용하여 기존의 SSL 인증서를 그대로 사용하며 Docker Registry로 리버스 프록시 하는 방법을 사용했다.
location /v2/ {
if ($http_user_agent ~ "^(docker\\/1\\.(3|4|5(?!\\.[0-9]-dev))|Go ).*$") {
return 404;
}
auth_basic "Docker Registry";
auth_basic_user_file /etc/nginx/htpasswd.users; # htpasswd 파일 경로
add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always;
proxy_pass <http://registry>:${REGISTRY_PORT}; # Docker Registry 주소
proxy_set_header Host $http_host; # 필요한 헤더 설정
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}