개발 이야기/서버 이야기

Docker + Nginx + NextJS

석구석구 2021. 11. 27. 17:19

도커를 이용해 Nginx와 MongoDB는 컨테이너 환경으로 띄우고, NextJS는 호스트 환경에서 실행하고 싶었다.

 

Nginx 설정과 로그는 볼륨 연결을 하고, MongoDB는 alias로 연결했다.

 

NextJS는 호스트에 떠있기 때문에, host.docker.internal을 통해 연결 했다.

 

docker compose 설정은 다음과 같다.

version: '2'
services:
  proxy:
    image: nginx:latest
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/logs:/var/log/nginx
    environment:
      - TZ=Asia/Seoul
    extra_hosts:
      - "host.docker.internal:host-gateway"
  mongodb:
    image: mongo:latest
    ports:
      - "27017:27017"
    volumes:
      - ./mongo/data:/data/db
    environment:
      - TZ=Asia/Seoul
    extra_hosts:
      - "host.docker.internal:host-gateway"

 

nginx에서 host에 떠있는 NextJS와 연결한다.

location / {
    proxy_pass http://host.docker.internal:3000;
    proxy_redirect off;
}

nginx에서 alias를 통해 또다른 컨테이너에 떠있는 MongoDB와 연결한다. 실제 운영 환경에서는 외부 노출하지 않을 예정이다.

location / {
    proxy_pass http://mongodb;
    proxy_redirect off;
}

이런식으로 구성하면 도커 파일 없이, 설정 파일만 git으로 관리할 수 있어 정말 편하다.

서버에서는 pull로 댕겨와 docker compose up만 해주면 된다.

'개발 이야기 > 서버 이야기' 카테고리의 다른 글

ubuntu에 docker 설치  (1) 2021.11.29
오라클 무료 VM 설정  (1) 2021.11.28
Mac SSH 연결과 간단한 리눅스 명령어.  (0) 2018.11.01
아파치 서버 설치 하기  (0) 2017.10.18