본문 바로가기
DevOps

[docker] docker-compose로 nginx 띄우기

by 햄과함께 2020. 7. 11.
반응형

로컬에서 8080 포트로 앱을 하나 띄웠습니다.

 my-app.com  으로 접속시 위 앱으로 접속하려고 합니다.

mac 기준으로 작성하였습니다.


host 파일에 도메인 등록

# /private/etc/hosts

127.0.0.1 my-app.com # add

host파일에 127.0.0.1 my-app.com 을 추가해줍니다. host파일 등록 참고


docker로 nginx 띄우기

my-app.com -> docker로 띄워진 nginx(80번 포트 listen)

host 파일 등록으로 위 작업이 가능해졌고

docker로 띄워진 nginx(80번 포트 listen) -> localhost:8080 접속

이제 위와 같은 작업을 하려고 합니다.

이를 위해 총 3개의 파일을 추가했습니다.

 

1. custom.conf

nginx conf 파일

server {
    listen 80;
    server_name my-app.com;

    location / {
        proxy_pass      http://host.docker.internal:8080;
    }
}

맥에서는 host.docker.internal 로 도커에서 호스트 호출할 수 있습니다.

 

2. Dockerfile

FROM nginx:latest
COPY custom.conf /etc/nginx/conf.d/custom.conf
CMD ["nginx", "-g", "daemon off;"]

nginx는 /etc/nginx/conf.d 폴더 하위에 있는 *.conf 파일들을 모두 nginx 설정으로 참조합니다.

따라서 위에서 등록한 custom.conf 를 해당 폴더로 복사해줍니다.

3. docker-compose.yml

version: '3'
services:
  nginx:
    build: .
    image: nginx:app
    ports:
     - "80:80"
    networks:
     - backend
networks:
  backend:
    driver: bridge

docker-compose 명령어로 nginx 를 띄우기 위해 docker-compose.yml 파일을 추가합니다.

$ docker-compose up

위 명령어로 nginx를 띄울수 있습니다.

이 때 명령어는 docker-compose.yml 이 있는 폴더 위치에서 해야하고 위3개의 파일은 모두 한 폴더안에 있어야 합니다.

$ docker-compose down

종료 시에는 위 명령어를 사용합니다.


 

이제 my-app.com 으로 작업시 8080 포트로 제공하던 app으로 접속이 되는것을 확인할 수 있습니다.


my-app.com --(hosts file)--> docker로 띄워진 nginx(80번 포트 listen) -> localhost:8080 접속

중요하니까 한 번 더

반응형

댓글0