서버 운영을 위해 Jenkins, Nginx, WAS 등 다양한 포트에 바인딩되어 구동되는 도커 컨테이너들이 있는데, 이들을 특정 도메인 이름으로 접속할 수 있도록 하기 위해 proxy를 가장 앞에 두고 포워딩하는 것이 필요하다. 이런 Proxy는 nginx를 주로 사용하는데, nginx를 기반으로 UI를 제공하여 포트 포워딩 및 각 도메인별 SSL을 손쉽게 설정할 수 있도록 도와주는 것이 NPM(Nginx Proxy Manager)이다.
NPM은 로그인 등의 처리를 위해 DB를 필요로 하며 이는 Nginx만을 위해 사용할 것이므로 외부에 포트바인딩 없이 docker compose로 NPM과 묶어주겠다.
docker-compose.yml
services:
db:
image: 'jc21/mariadb-aria:latest'
restart: always
environment:
MYSQL_ROOT_PASSWORD: '1234'
MYSQL_DATABASE: 'nginx'
MYSQL_USER: 'root'
MYSQL_PASSWORD: '1234'
volumes:
- ./mysql:/var/lib/mysql
app:
depends_on:
- db
image: 'jc21/nginx-proxy-manager:latest'
restart: always
ports:
- '80:80'
- '81:81'
- '443:443'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "root"
DB_MYSQL_PASSWORD: "1234"
DB_MYSQL_NAME: "nginx"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
+) 적용 예시



[그외]
dnszi.com -- 도메인 관리 서비스, A레코드 등록, ddns 설정 등
참고할점 - 방화벽 포트 개방 (중요)