tomcat 서비스를 docker-compose로 이용하고 있다.
인증서는 let's encrypt로 발급받은 3개월짜리 인증서를 volume mount로 하고 있다.
3개월마다 수동으로 하던 갱신을 이제야 자동화해본다. crontab에 등록하는 것이다.
내 tomcat docker-compose 는 이렇게 생겼다.
sungyong:/opt/tomcat$ cat docker-compose.yml
version: '2'
services:
tomcat:
image: 'bitnami/tomcat:9.0'
ports:
- '8080'
environment:
- TOMCAT_HTTP_PORT_NUMBER=8080
- TOMCAT_USERNAME=sungyong
- TOMCAT_PASSWORD=helele
- TOMCAT_ALLOW_REMOTE_MANAGEMENT=1
volumes:
- ./tomcat_data:/bitnami
nginx:
image: 'bitnami/nginx:1.16'
ports:
- '80:8080'
- '443:8443'
volumes:
- ./my_server_block.conf:/opt/bitnami/nginx/conf/server_blocks/my_server_block.conf:ro
- /opt/bitnami/letsencrypt/certificates/helele.key://opt/bitnami/nginx/conf/server.key:ro
- /opt/bitnami/letsencrypt/certificates/helele.crt://opt/bitnami/nginx/conf/server.crt:ro
갱신 스크립트를 아래와 같은 만들었다.
sungyong:/opt/bitnami/letsencrypt$ cat renew_ssl.sh
cd /opt/tomcat/
docker-compose stop
/opt/bitnami/letsencrypt/lego --tls --email="sungyong@gmail.com" --domains="helele --path="/opt/bitnami/letsencrypt" renew --days 90
docker-compose up -d
그리고 crontab에는 아래와 같이 등록
sungyong:/opt/bitnami/letsencrypt$ sudo crontab -l
# renew ssl every 1st day of month
0 3 1 * * /opt/bitnami/letsencrypt/renew_ssl.sh
이로써 귀찮은 갱신작업 하나 줄여본다.