Docker로 nginx 설치하는 방법

오늘은 docker로 Nginx를 설치하는 방법을 알아보겠습니다.

 

Docker

 

docker는 컨테이너라는 시스템을 사용해서 어플리케이션을 언제어디서나 동일한 상태로 사용할 수 있게 해주는데요. 일종의 가상화라고 생각하시면 될 것 같습니다.

그래서 리눅스 시스템에서 여러가지 패키지가 꼬이지 않게 하나로 관리할 수 있도록 해주는 것인데요. 설치는 기존에 것을 참고하시어 설치하시면 됩니다.

 

2025.09.30 - [Programming] - Docker Compose 설치

 

Docker Compose 설치

# 필수 패키지 설치sudo apt install -y ca-certificates curl gnupg# Docker GPG 키 등록sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# Docker

remake.tistory.com

 

Nginx 설치

사실 nginx는 그냥 네이티브로 설치해도 문제가 없는데요. 오늘은 공부하는 마음으로 docker로 설치하는 방법을 알아보겠습니다.

 

2023.01.12 - [Blog] - Nginx 명령어 알아보기

 

먼저 docker compose로 설치하기 위해서 폴더 하나를 만듭니다. 그리고 docker compose.yml을 만들어 줍니다.

 

mkdir data

sudo nano docker-compose.yml

도커의 nginx:latest를 다운받으며, 포트는 기본 포트인 80,443을 사용하는 형태입니다.

 

/data/nginx를 /etc/nginx/conf.d로 연동하기 때문에 로컬에 /data/nginx 폴더에 default.conf를 만들어 놓으면 nginx 설정 파일로 쓸 수 있습니다. 

 

그리고 홈페이지 루트는 /www로 만들어 놨습니다.

version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./data/nginx:/etc/nginx/conf.d
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
      - ./www:/var/www/html
    depends_on:
      - certbot

  certbot:
    image: certbot/certbot
    volumes:
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot

 

이후 도커를 실행합니다.

 

docker-compose up -d로 실행합니다.

docker-compose up -d



sudo docker ps

 

 

도메인 인증은 한번 받아야 하는데요. 도커 실행 후에 

 

이제 default.conf를 설정해줘야 하는데요.

 

아래처럼 간단하게 인증을 위한 것과 내용을 작성해줍니다. 폴더에 보면 도커가 실행되면서 자동으로 data/nginx라는 폴더가 만들어져 있을 겁니다.

default.conf를 만들고 아래처럼 설정해 줍니다.

server {
    listen 80;
    server_name 도메인; # 여기에 실제 도메인 주소를 입력하세요.

    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }

    # Let's Encrypt 도메인 인증을 위한 경로
    location ~ /.well-known/acme-challenge/ {
        allow all;
        root /var/www/certbot;
    }
}

 

 

이후 아래 명령어를 통해서 인증합니다.

 

메일 주소와 도메인 주소를 본인 것으로 수정해주세요.

docker-compose run --rm certbot certonly --webroot -w /var/www/certbot --email your-email@example.com -d your-domain.com --agree-tos --no-eff-email

명령어를 치면 주르륵 지나가면서 도메인 인증이 됩니다.

 

혹시 도커가 잘 살지 않는다면 아래 명령어를 통해서 컨테이너를 삭제하고 다시 시도해 봅니다.

 

아니면 VM에서 포트를 열어놓았는지 확인해보세요.

sudo docker container prune

 

인증 후에는 https도 연동해주구요.

 

server {
    listen 80;
    server_name 도메인; # 여기에 실제 도메인 주소를 입력하세요.

    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }

    # Let's Encrypt 도메인 인증을 위한 경로
    location ~ /.well-known/acme-challenge/ {
        allow all;
        root /var/www/certbot;
    }
}
server {
    listen 443 ssl;
    server_name 도메인;
    server_tokens off;

    ssl_certificate /etc/letsencrypt/live/도메인/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;


    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }

}

 

그리고 nginx를 다시 실행하려면 아래 명령어를 통해서 실행합니다.

sudo docker exec nginx nginx -s reload

 

이렇게 간단하게 nginx 설치를 docker로 해보았는데요.

 

잘 사용하시기 바랍니다.

'Programming' 카테고리의 다른 글

Docker Compose 설치  (0) 2025.09.30
ubuntu에서 구글 드라이브 마운트 하는 방법  (1) 2025.07.19
n8n 구글 드라이브 연동  (0) 2025.07.03
AI코딩 툴 replit 사용하기  (3) 2025.07.02
빅데이터 분석기사 오답노트  (1) 2025.03.18