이미지 빌드 및 docker compose로 실행

에서 우리는 하나 이상의 컨테이너를 실행하는 방법과 nginx를 사용하여 요청을 라우팅하는 방법을 보았습니다.

물론 3개의 이미지를 개별적으로 빌드한 다음 3개의 이미지를 순차적으로 실행하여 최종 생태계를 얻어야 했습니다.

이 게시물에서는 docker-compose를 사용하여 하나의 명령으로 모든 단계를 결합하려고 합니다.

이전 게시물의 코드가 체크인된 동일한 리포지토리에서 시작하여 로컬로 복제한 다음 docker-compose yml 파일을 설정하고 실행합니다.

1단계. 코드베이스를 복제합니다.



리포지토리를 복제합니다https://github.com/tirthaguha/container-reverse-proxy.

2단계. YML 파일 생성



네트워크 드라이버



자, docker-compose.yml 파일을 만들기 전에 docker-compose에서 네트워킹이 어떻게 작동하는지 이해하는 것이 중요합니다.
Docker는 네트워킹의 복잡성을 추상화하기 위해 가상 네트워크를 생성할 수 있으며 모든 컨테이너는 해당 네트워크에서 실행되고 상호 작용합니다. 이 가상 네트워크에 대한 한 가지 흥미로운 점은 네트워크 드라이버입니다. 컨테이너 에코시스템 설정에 따라 드라이버는 브리지, 오버레이 및 macvlan이 될 수 있습니다.
우리의 경우 동일한 호스트에서 모든 컨테이너를 실행할 것이므로 도커 작성 파일에서 브리지 네트워크 드라이버를 선택합니다. 이것article을 살펴보고 도커 네트워크에 대해 자세히 알아볼 수 있습니다.

도커 작성 파일 생성



docker-compose.yml은 애플리케이션, Dockerfile 및 실행할 네트워크에 대한 모든 정보를 포함하는 파일입니다.

다음은 container-reverse-proxy 디렉토리에 넣어야 하는 주석이 달린 docker-compose.yml입니다.

version: "3"

# start by defining the services
services:
  # this is the first nodeJS application
  nodejs_1:
    # lets keep name of the image as first-app
    image: first-app
    # this is where the Dockerfile is compiled into an image
    build:
      # where is the Dockerfile kept, relative to this directory
      context: ./first-app
      # obviously, the Dockerfile in that directory
      dockerfile: Dockerfile
    # port mapping
    ports:
      - 3000:3000
    # name of the container
    container_name: first-app
    # if the container crashes, it would be restarted automatically
    restart: unless-stopped
    # the virtual network of which this container will be a part of
    networks:
      - app-network

  # this is the second nodeJS application
  nodejs_2:
    # lets keep name of the image as first-app
    image: second-app
    build:
      # where is the Dockerfile kept, relative to this directory
      context: ./second-app
      dockerfile: Dockerfile
    ports:
      - 4000:4000
    container_name: second-app
    restart: unless-stopped
    networks:
      - app-network

  # Finally, the nginx, that controlls the route
  nginx-server:
    image: nginx-load-balancer
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 8080:80
    container_name: nginx-load-balancer
    restart: unless-stopped
    networks:
      - app-network

# the mysterious item, network
networks:
  app-network:
    driver: bridge


3단계. docker-compose 파일 실행



그냥 실행

$ sudo docker-compose up -d


그런 다음 브라우저로 이동하여 다음 URL을 열어보십시오.
  • http://localhost:8000/app-second
  • http://localhost:8000/app-first
  • 좋은 웹페이지 즐겨찾기