Docker에서 Caddy 설정

Caddy를 최근에 알게 되었는데, 개발 과정에서 생기는 대부분의 귀찮은 문제를 해결해줘서 좋다. 가장 마음에 드는건 개발 과정에서 https 인증 관련 오류를 안 봐도 된다는 점과 여러 프로젝트를 구동해도 port 마운트가 꼬일 일이 없다는 점!

docker-compose.yml

아래처럼 설정하면, caddyfile이 변경되면 알아서 반영한다. 참고로 caddy 네트워크는 사전에 생성되어 있어야 한다. 이제, 다른 docker로 구동하는 프로젝트는 모두 caddy 네트워크에 연결하면 별도로 포트를 공개할 필요가 없다.

services:
	caddy:
		image: caddy:latest
		container_name: caddy
		volumes:
			- ./Caddyfile:/etc/caddy/Caddyfile:ro
			- ./data:/data
		command: ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--watch"]
		restart: always
		networks:
			- caddy
		ports:
			- "80:80"
			- "443:443"
 
networks:
	caddy:
		external: true

인증서 등록

docker로 caddy를 구동하면, caddy trush 명령어는 사용할 수가 없다. 인증서를 별도로 등록해야 한다. 인증서는 /data 안에 있으므로, ./data/caddy/pki/authorities/local/root.crt를 찾아서 시스템에 등록하면 된다.