개발일기장
Docker 공부(3) - docker-compose 본문
http://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9791158392864
따라하며 배우는 도커와 CI 환경 - 교보문고
컨테이너 이론부터 Travis CI, AWS 실습까지 | ◎ 기본적인 도커 클라이언트 명령어 ◎ 도커를 이용한 간단한 Node.js 애플리케이션 만들기 ◎ 단일 컨테이너를 활용한 애플리케이션 개발과 배포 ◎
www.kyobobook.co.kr
1. docker-compose
복수의 컨테이너를 동시에 실행시킬 수 있다.
version: <버전 정보>
services:
<서비스 이름1>:
image: <사용할 이미지>
<서비스 이름2>:
build: <빌드 할 위치>
docker-compose up //docker-compose 실행 (docker-compose 파일이 있어야한다.)
docker-compose stop //실행중인 docker-compose 종료
docker-compose -f <docker-compsoe-file이름> up //docker-compose 파일 지정
docker-compose up --build //할때마다 빌드
이런식으로 여러개의 container를 실행 시킬 수 있다.
ex)
version: "3.7"
services:
redis-server:
image: "redis"
node-app:
build: .
ports:
- "5000:8080"
redis이미지를 가지고와서 서버를 실행시키고
nodejs app을 실행시키는 docker-compose
2. docker-compose를 사용하여 ReactJS 실행(1)
npx create-react-app 리액트 application 구축
일단 Docker 파일을 만든다.
FROM node:16
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY ./ ./
CMD ["npm","run","start"]
이전 포스팅처럼
1) 도커 내부의 /usr/src/app에서 실행하고
2) package.json에서 패키지를 다운받은 다음
3) 나머지 코드를 복사하고
4) 실행시키는 단계이다.
docker-compose-dev.yml 파일을 만들고
version: '3'
services:
react:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- ./:/usr/src/app
- /usr/src/app/node_modules
stdin_open: true
test:
build:
context: .
dockerfile: Dockerfile.dev
volumes:
- ./:/usr/src/app
- /usr/src/app/node_modules
command: ["npm","run","test"]
실행 컨테이너, 테스트 컨테이너를 만들어주는 내용이다.
build.context의 경우 빌드할 코드들이 있는 위치
build.dockerfile은 빌드 할 정보들이 있는 도커파일이다.
Volume : node_modules의 경우 페키지가 전부 들어있어서 빌드 할 때마다 복사하기가 힘들기 때문에 참조하지 말라고 저렇게 설정하고.
나머지 코드들은 수정시 따로 빌드없이 바로 적용이 가능하도록 설정을 해둔다.
1) docker-compose -f docker-compose-dev.yml up
2) docker-compose -f docker-compose-dev.yml up --build
소스 수정을 하는경우가 생기면 --build를 꼭 입력해주자.
어짜피 다른부부들은 캐시되어 있어서 금방된다.
3. Nginx이용하여 React Application 실행하기
별거 없다
Docker파일에서 내용을 추가하는데
React application을 build한 다음에 nginx로 이동시켜주는 것만 하면 됨.
FROM node:16 as builder
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY ./ ./
RUN npm run build
FROM nginx
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
1. FROM node:16 as builder <- 어떤 단계인지 명시를 한다.
2. COPY <--from=builder> 단계로부터 <이동시킬 파일들> <어디로> 명시해주면 된다.
4. Nginx, React 실제 운영할때 docker-compose.yml
version: '3'
services:
react:
build:
context: .
dockerfile: Dockerfile
ports:
- "80:80"
volumes:
- ./:/usr/src/app
- /usr/src/app/node_modules
stdin_open: true
test단계를 빼주고 dockerfile을 dev가 아닌 원래파일로 바꿔준다.
nginx 포트가 80이므로 노출하는곳 80으로 해서 local도 80으로 해준다.
'STUDY > Docker' 카테고리의 다른 글
Docker 공부(4) - git action , Docker hub에 이미지 push하기(간단) (0) | 2022.05.30 |
---|---|
Docker 공부(2) - NodeJS를 이용하여 (0) | 2022.05.26 |
Docker 공부(1) (0) | 2022.05.25 |