도커 8주차

ggomadev·2024년 6월 5일
0

도커

목록 보기
8/9
post-thumbnail

따라하며 배우는 도커와 CI환경 수강 및 실습하면서 정리한 내용입니다.

docker-fullstack-app

  • 멀티 컨테이너 구조

frontend 폴더

  • nginx > default.conf
server {
	listen 3000
    
    location / {
    	
        root /usr/share/nginx/html
        
        index index.html index.htm
        
        try_files $uri $uri/ /index.html
    }
}
  • index index.html index.htm: 인덱스 페이지로 할 파일명 설정
  • try_files $uri $uri/ /index.html: 리액트 라우터 사용할 경우 페이지간 이동할 때 필요

backend 폴더

  • /etc/nginx/conf.d/default.conf : 컨테이너 안에 있는 nginx 설정 파일 경로

  • COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf: 작성한 파일(./nginx/default.conf) 을 설정파일에 덮어줌

  • Dockerfile.dev -> CMD ["npm", "run", "dev"]

  • Dockerfile -> CMD ["npm", "run", "start"]

  • dev인 이유: backend의 경우 nodemon 사용하기 때문

  • nodemon: 코드 변경시 서버 재시작 없이 바로 반영될 수 있도록 해줌

mysql 폴더

개발 - 도커 사용
운영 - AWS RDS(Relational Database Service) 사용
-> 따로 Dockerfile.dev 작성할 필요x

  • initialize.sql: mysql 시작시 데이터베이스와 테이블 생성.
  • my.cnf: 한글 깨짐 현상 막기 위한 코드 추가
[mysqld]
character-set-server=utf8

[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8
  • ADD ./my/cnf /etc/mysql/conf.d/my.cnf:디폴트 설정을 덮어씌운다

nginx 폴더

  • PROXY 기능: 포트가 바뀌어도 변경 불필요(클라이언트 리퀘스트 처리
  • WEB SERVER 기능: 정적파일(프런트엔드 서버)
  • 프록시 기능용
  • default.conf파일에 프록시 기능 작성
  • upstream, proxy_pass 이후 코드는 docker-compose.yml 파일에 작성한 대로 써준다.

docker-compose.yml

재시작 정책

  • restart: no -> 재시작x
  • restart: always -> 항상 재시작
  • restart: on-failure-> 컨테이너가 멈췄을 때만 재시작
  • restart: unless-stopped -> 개발자가 임의로 멈추려고 할 때 빼고 항상 재시작

volumes

volumes:
	- ./mysql/mysql_data:/var/lib/mysql
    - ./mysql/sqls/:/docker-entrypoint-initdb.d/
  • : 뒤에 부분이 앞의 부분 참조
  • 이전 실습에서는 volume이 코드 변경시 바로 적용될 수 있도록 업데이트 했다면
  • 여기에서는 데이터베이스에 저장된 데이터를 컨테이너가 삭제되더라도 자료 자체는 그대로 보존하도록 해주기 위함임(원래는 컨테이너 지우면 컨테이너에 저장된 데이터들도 다 지워짐)

docker-compose up

실습 오류

코드 작성한 다음, docker-compose up했을 때 오류남

해결 방법
mysql Dockerfile에 --platform=linux/x86_64 추가

참고한 블로그 https://ninano1109.tistory.com/132

0개의 댓글