docker

docker (주문앱 배포)

짱구는굿 2023. 10. 10. 13:17
client -> 80 -> proxy server
1.frontend 9000
2.order 9001 -> GET "/api/order"
3.store 9003 -> GET "/api/store/  -> 메뉴
4.user 9002  -> POST "/api/user"

 

 

각 폴더에 Dockerfile 파일 생성 후 내용 집어넣기

FROM python:3.8-slim-buster
WORKDIR /python-docker
COPY . .
RUN pip3 install -r requirements.txt
CMD [ "python3", "app.py" ]

 

생성 후 각 폴더위치에서 명령어 실행

 docker build -t front-docker .
 docker build -t order-docker .
 docker build -t store-docker .
 docker build -t user-docker .

 

 

Traefik

 

https://doc.traefik.io/traefik/providers/docker/

 

Traefik Docker Documentation - Traefik

Traefik & Docker A Story of Labels & Containers Attach labels to your containers and let Traefik do the rest! Traefik works with both Docker (standalone) Engine and Docker Swarm Mode. The Quick Start Uses Docker If you have not already read it, maybe you w

doc.traefik.io

 

https://hub.docker.com/_/traefik

 

traefik - Official Image | Docker Hub

traefik •• Traefik, The Cloud Native Edge Router

hub.docker.com

 

https://blog.zarathu.com/posts/2022-02-08-traefik-reverseproxy/

 

Zarathu Blog - Docker와 Traefik을 활용한 Reverse-Proxy 구현

숭실대학교 인턴십 프로그램을 통하여 참여한 차라투에서 인턴으로 활동하며 5주차 동안 학습한 내용에 대해 공유합니다. 목표 Docker와 Traefik을 활용하여 Reverse-Proxy를 구현한다. 목차 Traefik이란?

blog.zarathu.com

 

docker-compose.yml 파일 생성 후 내용 입력 version: "3.3"

services:
  traefik:
    image: "traefik:v2.9"
    container_name: "traefik"
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  whoami:
    image: "traefik/whoami"
    container_name: "simple-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Path(`/whoami`)"
      - "traefik.http.middlewares.strip-counter.stripprefix.prefixes=/whoami"
      - "traefik.http.routers.whoami.entrypoints=web"

  order:
    image: order-docker
    container_name: "order-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.order.rule=PathPrefix(`/api/order`)"
    expose:
      - 9001 
    restart: always

  front:
    image: front-docker
    container_name: "front-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.front.rule=Path(`/`) || PathPrefix(`/w`)"
    expose:
      - 9000 
    restart: always

  store:
    image: store-docker
    container_name: "store-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.store.rule=PathPrefix(`/api/store`)"
    expose:
      - 9003 
    restart: always

  user:
    image: user-docker
    container_name: "user-service"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.user.rule=PathPrefix(`/api/user`)"
    expose:
      - 9002 
    restart: always

 

 

docker compose up -d 
실행 후 docker ps 
윈도우 80번 포트로 접속

 

 

접속 화면

 

 

로그인 창

 

 

완료