
🛠️ 설치 순서
1. proxy
네트워크 생성 (단 한 번만)
bash
복사편집
docker network create proxy
2. nginx-proxy
+ acme-companion
실행
yaml
복사편집
version: '3.8' services: nginx-proxy: image: nginxproxy/nginx-proxy container_name: nginx-proxy restart: always ports: - "80:80" - "443:443" volumes: - ./certs:/etc/nginx/certs - ./vhost.d:/etc/nginx/vhost.d - ./html:/usr/share/nginx/html - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxy acme-companion: image: nginxproxy/acme-companion container_name: acme-companion restart: always volumes: - ./certs:/etc/nginx/certs:rw - ./vhost.d:/etc/nginx/vhost.d - ./html:/usr/share/nginx/html - /var/run/docker.sock:/var/run/docker.sock:ro depends_on: - nginx-proxy networks: - proxy networks: proxy: external: true
bash
복사편집
docker-compose -f nginx-proxy.yml up -d
3. WordPress 1개 구성 예시 (blog1)
yaml
복사편집
version: '3.8' services: wp1-db: image: mariadb:10.11 container_name: wp1-db restart: always environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: wp1db MYSQL_USER: wpuser MYSQL_PASSWORD: wppass volumes: - ./db:/var/lib/mysql networks: - proxy wp1: image: wordpress:php8.2-fpm container_name: wp1 restart: always environment: WORDPRESS_DB_HOST: wp1-db:3306 WORDPRESS_DB_NAME: wp1db WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: wppass VIRTUAL_HOST: blog1.super-keyword.com LETSENCRYPT_HOST: blog1.super-keyword.com LETSENCRYPT_EMAIL: your@email.com volumes: - ./html:/var/www/html networks: - proxy networks: proxy: external: true
wp2
,wp3
는 위 구성에서 이름과 포트,VIRTUAL_HOST
,LETSENCRYPT_HOST
만 다르게 복제해서 만들면 됩니다.
🔐 SSL 인증 확인
https://blog1.super-keyword.com
에 접속하면 자동으로 인증서가 발급되고 HTTPS로 접속됩니다. 발급까지 수 분 정도 소요될 수 있습니다.
🧼 기존 WordPress (패키지 설치 버전) 정리
- DSM 패키지에서 설치한 WordPress는 삭제해도 됩니다.
- 기존에 사용하던 포트 (예: 5000, 5001)는 무관합니다. Docker nginx-proxy가 직접 80/443 포트를 차지하기 때문에 충돌 주의!
🔁 요약 정리
항목 | 설명 |
---|---|
리버스 프록시 | nginx-proxy |
SSL 인증 | acme-companion |
WordPress | 각 wp 컨테이너 + DB 컨테이너 |
네트워크 | 모두 proxy 라는 docker network에 연결 |
도메인 | 가비아 DNS에서 blog1, blog2, blog3 A 레코드 등록 |
인증서 | 자동 발급 (Let’s Encrypt) |
💬 다음 단계로 확인해볼 것들
- NAS 포트 포워딩: 공유기에서 NAS로 80/443 포트 열려 있는지 확인
- Docker 컨테이너 로그 확인 (특히 acme-companion 로그)
certs/
,html/
,vhost.d/
볼륨에 권한 문제 없는지 확인
필요하시면 blog2
, blog3
도 Compose 구성 예시 드릴게요.
진행하면서 문제 생기면 바로 알려줘요.