-
배포 - Multi App을 만들기 위한 Docker Compose 파일 작성하기Infra/CI-CD 2023. 1. 6. 15:30
docker-compose.yml 작성
nginx,프론트엔드, 백엔드, MySQL 각각을 컨테이너를 위한 도커파일을 작성했다. 하지만 그들 컨테이너들을 다 작동 시킨다고 생도 컨테이너 환경 특성사 서로 독립적으로 존재하기 때문에 별도의 설정을 하지 않으면 독립된 컨테이너 끼리 서로 통신을 할 수 없다. 그래서 이번 게시물에서는 컨테이너들을 서로 연결시켜주기 위해서 Docker Compose를 작성한다.
docker-compose.yml
verion: "3" services: frontend: build: dockerfile: Dockerfile.dev context: ./frontend volumes: - /app/node_modules - ./frontend:/app stdin_open: true nginx: restart: always build: dockerfile: Dockerfile context: ./nginx ports: - "3000:80" backend: build: dockerfile: Dockerfile.dev context: ./backend container_name: app_backend volumes: - /app/node_modules - ./backend:/app MySQL: build: ./MySQL restart: unless-stopped container_name: app_mysql ports: - "3309:3306" volumes: - ./MySQL/mysql_data:/varlib/mysql_data - ./MySQL/sqls/:/docker-entrypoint-initdb.d/ environment: MYSQL_ROOT_PASSWORD: 1234 MYSQL_DATABASE: multiapp
Nginx
version: "3" services: nginx: restart: always build: dockerfile: Dockerfile context: ./nginx ports: - "3000:80"
재시작 정책
restart: always
서버가 켜지던 도중 갑자기 꺼는지 경우가 종종 발생 ex) 크래시
그럴 경우 어떻게 서버를 재시작할 것인지 정하는 정책
- restart: "no" - 어떠한 상황에서도 재시작을 하지 않는다.
- restart: always - 항상 재시작을 한다.
- restart: on-faliure - on-failure 에러코드와 함께 컨테이너가 멈추었을때만 재시작을 한다.
- restart: unless-stopped - 임의로 멈추려고 할때 빼고는 항상 재시작한다.
프록시 역활을 하는 Nginx같은 경우 굉장히 중요한 역할로 해당 Nginx의 기능이 멈추면 Client에서 아무리 요청을 보내도 작동하는 것이 없다.
'Infra > CI-CD' 카테고리의 다른 글
배포 - Multi App을 만들기위한 Dockerfile (Nginx) (0) 2023.01.06 배포 - Multi App을 만들기위한 Dockerfile (MySQL) (0) 2023.01.05 배포 - Multi App(ReactJS/NodeJS)와 위한 Dockerfile 만들기 (0) 2023.01.05 배포 - Docker를 이용한 복잡한 어플리케이션 만들기 (설계) (0) 2023.01.05 배포 - AWS Elastic Beanstalk (0) 2023.01.03