#1. 도커 컨테이너 기반 프로젝트에서 자동 SSL 발급 받는 법
⚠️ 문제
- (Docker 기반으로 AWS Lightsail에서 운영하는 프로젝트)
- HTTPS로 접속시 브라우저에서 '보안 경고'가 발생하는 문제
🔍 원인 분석
- SSL 인증서 없음
⚡ 해결방법
- 기존 docker-compose.yml 파일에 아래 2가지 Docker 이미지를 추가하여 SSL 자동 발급
Nginx reverse proxy (jwilder/nginx-proxy),
Let's Encrypt companion (JrCs/letsencrypt-nginx-proxy-companion)
기존 구성
📁 DainWiki/
├── 📁 bookstack/
├── 📁 bookstack_db/
├── docker-compose.yml
yml 파일 수정 후
📁 DainWiki/
├── 📁 bookstack/ # BookStack 컨테이너 설정 및 데이터
├── 📁 bookstack_db/ # MariaDB 데이터
├── 📁 certs/ # 인증서 저장소 (자동 생성됨)
├── 📁 html/ # nginx 기본 페이지 저장소
├── 📁 vhost.d/ # 가상 호스트 설정 (자동 생성됨)
├── docker-compose.yml # 전체 도커 설정
📌 ① Let's Encrypt 인증서 발급용 설정
service:
- VIRTUAL_HOST=dainwiki.com
- LETSENCRYPT_HOST=dainwiki.com
- LETSENCRYPT_EMAIL=your@email.com
📌 ② APP_URL 값 http → https로 변경함
- - APP_URL=http://dainwiki.com
+ - APP_URL=https://dainwiki.com
→ 프로젝트가 내부적으로 https 주소를 인식하게 해준다.
📌 ③ nginx-proxy 및 letsencrypt 컨테이너 추가
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs
- ./vhost.d:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
networks:
- bookstack_net
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt
restart: always
environment:
- NGINX_PROXY_CONTAINER=nginx-proxy
- DEFAULT_EMAIL=your@email.com
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./certs:/etc/nginx/certs
- ./vhost.d:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
depends_on:
- nginx-proxy
networks:
- bookstack_net
→ 자동 프록시 + SSL 발급기 역할