Seize the day

POST : Backend study

docker container간에 네트워크 설정 - study

awesome-compose/nginx-nodejs-redis at master · docker/awesome-compose · GitHub

 

GitHub - docker/awesome-compose: Awesome Docker Compose samples

Awesome Docker Compose samples. Contribute to docker/awesome-compose development by creating an account on GitHub.

github.com

여기의 docker를 생플을 가지고 스터디를 진행한다. 

nginx/Dockerfile을 사용하여 이미지를 생성하지 않고 docker hub의 이미지로 컨테이너만 만들어서 돌려보자..

/docker-compose.yml 의 내용을 일부 아래처럼 수정하면 된다...
Before:

  nginx:
    build: ./nginx
    ports:
    - '80:80'
    depends_on:
    - web1
    - web2

After: nginx의 버전을 명기하는게 좋겠다.

  nginx:
    image: nginx:1.21.6
    ports:
      - '80:80'
    depends_on:
      - web1
      - web2
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf

 

nginx를 다른 compose 파일로 변경해보자.. nginx는 proxy 서버이므로 수정될 일이 없으므로 개발 단계에서 매번 start /stop을 반복할 필요가 없다. 

/nginx/docker-compose.yml  생성

services:
  nginx:
    image: nginx:1.21.6
    ports:
      - '80:80'
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf

 

nginx-nginx-1 | 2022/10/20 16:37:39 [emerg] 1#1: host not found in upstream "web1:5000" in /etc/nginx/conf.d/default.conf:2
nginx-nginx-1 | nginx: [emerg] host not found in upstream "web1:5000" in /etc/nginx/conf.d/default.conf:2

nginx.conf에 정의되어 있는 web1, web2 호스트를 를 찾을 수 없다는 에러..

/nginx/docker-compose.yml 수정

services:
  nginx:
    image: nginx:1.21.6
    ports:
      - '80:80'
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    networks:
      - backend

networks:
  backend:
    driver: bridge
    external: true
    internal: true

nodejs를 돌리는 compose 와 네트워크를 공유해야 하므로 backend 네트워크를 생성하고,  netwoks: 로 backend 지정
# docker network create backend

그래도 에러나네... 아마도 web1, web2가 실행중이지 않아서 인듯..

nginx-nginx-1 | 2022/10/20 16:51:18 [emerg] 1#1: host not found in upstream "web1:5000" in /etc/nginx/conf.d/default.conf:2
nginx-nginx-1 | nginx: [emerg] host not found in upstream "web1:5000" in /etc/nginx/conf.d/default.conf:2

 

/docker-compose.yml 수정

services:
  redis:
    image: 'redislabs/redismod'
    ports:
      - '6379:6379'
    networks:
      - backend
  web1:
    restart: on-failure
    build: ./web
    hostname: web1
    ports:
      - '81:5000'
    networks:
      - backend
  web2:
    restart: on-failure
    build: ./web
    hostname: web2
    ports:
      - '82:5000'
    networks:
      - backend

networks:
  backend:
    driver: bridge
    external: true
    internal: true

두개의 node 서버와 redis를  묶은 compose를 실행한 후..  nginx/docker-compose.yml를 실행하면 정상동작한다..

proxy 용 nginx 
app1용 node 서버
app2용 node 서버
app1과 app2가 동시에 사용하는 mongodb 
이런식으로 4개의 켄테이너를 각각 띄울 수 있게되었고. 순서대로 한다면 db -> app1 -> app2 -> nginx 실행시키면 문제 없이 동작 할 듯..

 

Docker overview | Docker Documentation 도커 공부는 이걸로 시작.

Docker Compose와 버전별 특징 : NHN Cloud Meetup (toast.com)

Multi container apps | Docker Documentation

 

top

posted at

2022. 10. 21. 02:02


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크