코딩 공부/공부

docker

fullfish 2022. 10. 3. 16:29

장점

의존성 충돌 문제를 해결해 준다

개발과 배포 환경을 일치시킨다

수평 확장을 쉽게 해준다

각 서버에 새로운 내용을 배포하기 쉽게 만들어준다

 

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