express js를 docker image로 올리기

ever.d·2022년 11월 8일
0

job

목록 보기
3/3

node express 로 개발한 소스 코드를 docker로 올릴 때의 이점

  • os에 독립적 mac os / window / linux 환경 등 환경에 종속되지 않는다는 이점이 있다.

Dockerfile 🐳

FROM node:18-alpine

RUN apk add g++ make py3-pip

EXPOSE 3000

WORKDIR /project

COPY . /project

RUN npm install

CMD ["npm", "run","start"]
  1. alpine으로 경량화된 이미지를 만든다. (경량화 목적)
  2. node를 쓰다보면 암호화가 대개 쓰이는데 (bcrypt 등) 이 라이브러리는 파이썬 기반이기 때문에 python 환경을 설치해주어야 한다. 혹은 alpine을 사용하지 않는 방법도 있다.
  1. EXPOSE 다음에는 현재 앱이 구동되는 포트번호를 붙인다.
  2. 마지막으로 package.json에 있는 명령어로 앱을 실행한다. 이 때 주의할 점은 이때 사용한 명령어가
    nodemon을 사용한 명령어라면 api를 호출할 때마다 cors error를 맞닥뜨리게 될 것이다. 이를 다시 한번 확인하자.

docker-compose.yml 🐋🦈

version: "3.7"

services:
  backend:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: project
    ports:
      - 3000:3000
    volumes:
      - ./app:/project/app
    restart: "always"

  db:
    platform: linux/x86_64 # 우회
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: ""
      MYSQL_ROOT_PASSWORD: ""
      MYSQL_TCP_PORT:
      TZ: "Asia/Seoul"
    ports:
      - 3306:3306

그리고 해당 명령어를 입력해준다.

(sudo) docker-compose build // 빌드
(sudo) docker-compose up -d // 실행
docker ps (실행 중인 컨테이너 목록을 확인 가능하다.)

AWS deploy
docker image를 build할 때 해당 에러를 마주한다면 먼저 모든 불필요한 메모리가 삭제되었는지를 확인한다.

Error❗️
no space left on device

df-h / docker 용량 확인

Docker Volume : 컨테이너 내부에 사용되는 파일들이 저장되는 장소로 휴지통의 개념을 가지고 있어 파일 삭제 시 바로 삭제되지 않는다. 해당 파일들 때문에 실제 사용하는 파일 용량보다 Volume의 용량이 더 큰 경우가 있다고 한다.

해당 디렉토리안에 파일을 지워서 용량을 확보 할 수 있다.

docker container prune : 중지된 모든 컨테이너 삭제
docker image prune : 사용하지 않는 이미지 삭제(dangling images)
docker volume prune : 컨테이너와 연결되지 않은 모든 볼륨 삭제
docker network prune : 컨테이너와 연결되지 않은 모든 네트워크 삭제
👍 docker system prune -a : 위에 명령어를 통합해서 한번에 실행. 사용하지 않는 모든 오브젝트를 삭제 (prune images, containers, networks along with volumes)

profile
developer / not moving for fortune, only aiming for clear sense of purpose. That's all.

0개의 댓글