티스토리 뷰
node express를 활용해서 간단한 웹 서버를 띄우는 테스트를 해보겠습니다.
Docker 설치는 되어있어야 합니다. 저는 Ubuntu 환경 에서 실습하였습니다.
File 준비
Docker image를 build 하기 위한 Dockerfile 과 node 서버 코드가 담긴 server.js를 작성합니다.
현재 환경
- 현재 경로 : /root/nodetest
- 필요 파일 : Dockerfile, server.js
server.js
const express = require('express')
const app = express()
app.get("/", (req, res) => {
res.send("안녕");
})
app.listen("3000",() => {
console.log('server is started');
})
Dockerfile
FROM node:19-alpine
RUN mkdir /app
WORKDIR /app
RUN npm init -y
RUN npm install express
COPY ./server.js /app # <host path> <container path>
CMD ["node", "/app/server.js"]
분석
- FROM : base image 지정, local repository에 없는 경우 image가 pull 됩니다.
- RUN : image build 과정에서 수행되는 명령어 입니다.
- WORKDIR : command가 실행 될 Working Direcotry를 지정합니다.
- COPY : 호스트에서 컨테이너로 파일을 복사합니다.
- CMD : Container 실행 시 수행되는 명령어입니다.
❗ RUN과 CMD 명령어를 수행한다는 점에서는 같지만, 실행 시점이 다른 것을 유의해주세요.
Image Build
file이 준비되었으면 build를 하면 됩니다. Dockerfile을 기반으로 새로운 image가 생성됩니다.
docker build -t mynode . # 마지막 .은 Dockerfile 위치입니다. 현재 directory로 지정했습니다.
현재 경로 : /nodetest
확인
docker images
mynode image가 생성된 것을 확인할 수 있습니다.
container 실행
# -p : port forwarding, <host port>:<container port>
# -d : background 실행
docker run -dp 3000:3000 mynode
확인
➕ container 내부 확인
일전에 image build시 내용을 기억하시나요? /app 폴더를 만들고 server.js를 해당 폴더에 복사를 했습니다.
실제로 만들어졌는지 확인해봅시다.
container id 확인
docker ps # 현재 실행 중인 컨테이너 목록
container terminal로 접속
docker exec -it fbcfb1a0df25 sh # 해당 컨테이너에 접속하여 sh(shell) 명령어를 실행
분석
RUN, COPY 명령어로 실행된 모든 것들이 만들어져 있는것을 확인할 수 있습니다.
- /app : mkdir
- package.json, package-lock.json : npm init -y
- node_modules : npm install express
- server.js : COPY 명령어를 통해 복사된 파일입니다.
이상입니다.
관련 링크
'개발 환경구축' 카테고리의 다른 글
Docker Compose 구성 실습 - node express, mysql 연동 (0) | 2023.01.19 |
---|---|
[Docker] 생성된 Container Image로 만들기 (0) | 2023.01.18 |
[VSCode] User Snippet 설정 (축약어 설정) (0) | 2022.09.05 |
[Node] npm run 동작 방식 알아보기 (0) | 2022.09.03 |
ESLint vs Prettier 차이 (With 예시) (0) | 2022.08.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스마트피싱보호_캠페인
- 티스토리챌린지
- dockerignore
- rest api 단건 다건
- 오블완
- postgresql 수정시간 자동 갱신
- 1종 적성검사 국가건강검진
- 외래키 삭제
- docker image 경량화
- docker multi stage build
- express crud
- Oracle Database 19C 설치
- Oracle Database 19c install
- 1종 적성검사
- vue onunmounted
- unmounted composable
- rest api 조회 생성 수정 삭제
- 강서 운전면허 시험장
- 1종 적성검사 신체검사
- vue unmounted
- postgresql on update current_timestamp
- unmounted document.addlistener
- rest api crud
- unmounted setinterval
- oracle 19c 설치
- vue 이벤트 해제
- vue 타이머 해제
- 1종 적성검사 과태료
- unplugin-auto-import
- 스파르타 코딩클럽
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함