Docker compose를 사용한 Nginx 서버 만들기

Docker compose 설치

Docker가 이미 설치된 Debian에서 Docker compose를 설치하는 방법입니다.

Docker 설치하기 링크로 이동하시면 더욱 자세한 가이드가 있습니다.
sudo apt install docker-compose-plugin

아래 모든 작업은 사용자 환경에서 작업하는 Docker compose를 기반으로 합니다.
홈 폴더에 compose 폴더를 만들어 작업을 진행합니다.

mkdir ~/compose/{nginx,htdocs} -p

compose.yaml

Nginx 컨테이너에 필요한 설정이 모여 있습니다. 이곳에서 참조할 디렉토리 또는 포트 번호를 필요에 따라 다른 값으로 변경 가능합니다.

services:
  nginx:
    image: nginx:mainline-alpine
    ports:
      - "80:80"
    volumes:
      - ./htdocs/:/usr/share/nginx/html/
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    container_name: "web"

image

Docker Hub에서 받아올 이미지와 버전명을 입력합니다.
설정이 변경되지 않은 경우 Nginx 컨테이너는 nginx:mainline-alpine 이미지를 기반으로 작업합니다.

ports

Nginx 컨테이너 내부의 포트와 외부의 포트를 연결하는 경우 사용합니다.
현재 서버가 localhost일 때 ports 설정이 “80:8080″인 경우 Nginx 사용을 위해 localhost:8080으로 접속해야 합니다.

volumes

직접 접근 가능한 파일 또는 디렉토리를 이미지 파일 내부와 연결하는 경우 사용합니다.
연결할 파일 또는 디렉토리를 빌드 이전에 미리 준비해 두어야 합니다.

nginx/default.conf

HTTP로 요청이 들어오면 root 디렉토리에서 index로 설정한 파일을 보여줍니다.

server {
    listen 80;
    server_name localhost;

    root /usr/share/nginx/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ /\.ht {
        deny all;
    }
}

listen

서비스할 포트 번호를 설정합니다. HTTP 기본 포트는 80, HTTPS는 443입니다.

server_name

현재 서버로 접속하는 도메인명을 입력합니다.
서버에 도메인을 연결한 경우 server_name (도메인명)으로 입력합니다.

root

Nginx가 index 파일을 읽게 될 디렉토리를 설정합니다.

index

index 파일로 읽게 될 파일명과 확장자를 설정합니다.
기본 설정으로 index.html index.htm을 사용합니다.

도메인 또는 IP로 서버에 성공적으로 접속했지만 주소가 없는 경우 index 파일을 가져옵니다.

Docker compose 실행하기

Bash
docker compose up -d

빌드한 이후 docker compose start, docker compose restart, docker compose stop 으로 제어할 수 있습니다.

관련 문서

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다