docker - Nginx에 webserver연동하기

들어가기

개인용 포트폴리오 웹을 어떻게 서비스할까 고민하던중 docker를 문뜩 docker를 이용해보고 싶어졌다. 이글은 Windows환경에서 Docker for Windows를 통해서 nginx 이미지를 이용하여 로컬에 있는 webserver 를 실행예제이다.

nginx 이미지 다운받기

1
docker pull nginx

위 명령어를 이용해서 docker hub에서 nginx 공식 이미지를 다운 받는다.

nginx 웹서버에 올릴 웹 폴더 준비

준비된 웹폴더

나는 위처럼 nginx에 실행할 웹 폴더를 준비했다. 만약 따라하는 사람이 있다면 그냥 특정폴더에 index.html 파일만 있어도 된다.

nginx 컨테이너를 실행하면서 웹폴더 연동하기

1
docker run --name nginx-mokafolio -v /C/Users/amagr/Desktop/projects/mokafolio:/usr/share/nginx/html:ro -d -p 58080:80 -p 443:443 nginx

위 명령어는 nginx이미지를 컨테이너로 만들고 프로세스를 실행하는 명령어이다. 명령어를 쪼개어 설명해보겠다.

1
docker run

docker 이미지를 컨테이너로 만들고 실행한다.

1
--name nginx-mokafolio

생성하는 컨테이너의 이름을 nginx-mokafolio라고 명명한다.

1
-v /C/Users/amagr/Desktop/projects/mokafolio:/usr/share/nginx/html:ro

위 설정은 실행할 컨테이너의 볼륨(volume)을 연결하는 것이다. 즉, 로컬의 /C/Users/amagr/Desktop/projects/mokafolio 경로를 실행할 컨테이너의 /usr/share/nginx/html로 연결한다.

내 경우 윈도우 경로가 C:\Users\amagr\Desktop\projects\mokafolio 이지만 /C/Users/amagr/Desktop/projects/mokafolio 식으로 변경해야 한다.

-d 옵션은 컨테이너를 데몬(백그라운드)로 실행하겠다는 말이다. -p 58080:80 -p 443:443의 의미는 로컬의 58080포트를 컨테이너의 80포트로 연결하고, 로컬의 443포트를 컨테이너의 443포트에 연결한다.

명령어 마지막의 nignx는 docker run이 실행할 이미지의 이름이다.

대충 명령어 설명은 끝냈다.

1
docker ps

위 명령어로 재대로 컨테이너가 동작하는지 확인해 보자.

docker ps로 현재 실행중인 컨테이너 확인결과.

브라우저에서 localhost:58080으로 접근해서 nginx가 잘 동작되는지 확인해보자.

docker nginx 웹서버 동작 확인.

잘 동작하는 것을 확인했다.

사실 실제 docker를 사용할때에는 ningx와 웹서버 폴더를 하나의 이미지로 묶어서 하나의 새로운 이미지로 만들어 사용한다고 하는데...

그건 나중에 좀더 공부해 봐야 겠다.