https://github.com/wmnnd/nginx-certbot
upstream 도커컨테이너 이름 {
server 도커컨테이너 이름:8080;
}
server {
listen 80;
listen [::]:80;
server_name 도메인;
location /.well-known/acme-challenge/ {
allow all;
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name 도메인;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/vote-share.kro.kr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vote-share.kro.kr/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://도커 컨테이너이름;
proxy_set_header Host $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;
}
}
version: '1'
services:
spring-app:
image: 본인 스프링 이미지
container_name: 컨테이너이름
ports:
- "8080:8080"
restart: unless-stopped
nginx:
image: nginx:1.15-alpine
restart: unless-stopped
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
ports:
- "80:80"
- "443:443"
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
certbot:
image: certbot/certbot
restart: unless-stopped
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
nginx:
image: nginx:1.15-alpine
restart: unless-stopped
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
ports:
- "80:80"
- "443:443"
https://github.com/wmnnd/nginx-certbot/blob/master/init-letsencrypt.sh
sudo docker-compose build
sudo sh ./init-letsencrypt.sh
sudo docker-compose up -d