장점
의존성 충돌 문제를 해결해 준다
개발과 배포 환경을 일치시킨다
수평 확장을 쉽게 해준다
각 서버에 새로운 내용을 배포하기 쉽게 만들어준다
mac 설치
https://docs.docker.com/desktop/install/mac-install/
linux 설치
https://docs.docker.com/engine/install/ubuntu/
docker --version으로 설치 확인
이미지화 할 폴더내에
Dockerfile 파일을 만들고
FROM node:current-slim
# 앱 디렉터리 생성
WORKDIR /usr/src/app
# 앱 의존성 설치
# 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해
# 와일드카드를 사용
COPY package*.json ./
RUN npm install
# 프로덕션을 위한 코드를 빌드하는 경우
# RUN npm ci --only=production
# 앱 소스 추가
COPY . .
EXPOSE 8000
CMD [ "npm", "start" ]
처럼 작성함
.dockerignore 파일을 만들고 // Docker 이미지에 로컬 모듈과 디버깅 로그를 복사하는 것을 막아서 이미지 내에서 설치한 모듈을 덮어쓰지 않게 합니다.
node_modules
npm-debug.log
작성
sudo docker build -t <태그이름> . // 빌드해서 이미지 파일을 만듦 . 붙여줘야함 현재경로
sudo docker image ls // 이미지 리스트 출력
sudo docker container ps -a // 모든 컨테이너 리스트 출력 // ps와 ls은 동일 -a는 모든것 생략시 가동중인것만
sudo docker container rm <컨테이너이름> // 컨테이너 삭제
sudo docker image rm <이미지이름> // 이미지 삭제
sudo docker image ls // 이미지 용량 확인
sudo docker container run --name 컨테이너_이름 docker/whalesay:latest cowsay boo // 실행 예시 —name은 옵션
sudo docker run -d -p 8000:8000 gractor // 다른 실행 예시
-d : 백그라운드 실행,
-p : 공개 포트를 컨테이너 내의 비공개 포트로 리다이렉트. 80:8000과 같은거 쓸때
-it : i와 t를 보통 같이 쓰는데 컨테이너 종료하지않고 터미널의 입력을 컨테이너로 전달하기 위해서
-e : 환경변수 설정. env파일도 덮어씌워지며 FOO=bar과 같은 형식으로 씀
'코딩 공부 > 공부' 카테고리의 다른 글
산술부호화 압축 알고리즘 (0) | 2023.01.20 |
---|---|
nginx (0) | 2022.10.03 |
nodemailer를 이용한 mail보내기 (0) | 2022.06.08 |
환경변수 사용법 (react, webpack, aws) (0) | 2022.06.02 |
**연산자에대한 고찰 (1) | 2022.05.31 |