TIL - day43

정상화·2023년 4월 21일
0

TIL

목록 보기
33/46
post-thumbnail

Docker

docker-compose

관련된 서비스에 대해 한번에 여러 도커 명령어를 실행시키는 기능

docker-compose.yml 파일이 필요하다.

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
    environment:
      TZ: "Asia/Seoul"
      DB_MYSQL_HOST: "172.17.0.1"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "lldjlocal"
      DB_MYSQL_PASSWORD: "1234"
      DB_MYSQL_NAME: "nginx"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

이후 docker compose up -d를 실행하면 직접 docker run을 한 것과 같이 실행된다.


Nginx proxy manager

이전의 vhost 파일을 통한 맵핑정보를 nginx proxy manager를 이용해 gui 환경에서 설정할 수 있다.


81포트로접속

특정도메인을 가상머신의 8021로 연결

가상머신의 호스트에서 특정도메인 접속

  • 현재 호스트 -> 가상머신 -> 도커들로 레이어가 설정돼있다.
  • 도커들 중에 Nginx Proxy Manager(이하 npm)가 가상머신의 81, 80, 443 포트와 연결돼있다.
  • npm은 접속시도한 도메인을 보고 해당 도메인에 따라 다시 가상머신의 포트로 요청을 토스한다. (site2.com은 가상머신의 8021로 토스돼었다.)
  • 가상머신의 8021포트는 8080포트(노드 서버 켜놨음)로 포트포워딩 된 상태이다.

결론

  1. site2.com요청이 가상머신의 80포트로 들어옴
  2. 가상머신의 80포트는 npm도커로 포트포워딩 돼있음
  3. site2.com은 가상머신의 8021로 토스해야함을 npm은 알고있음
  4. 8021로 정보가 토스돼고 8021은 8080으로 포트포워딩 돼있음
  5. 요청이 8080으로 들어감.

profile
백엔드 희망

0개의 댓글