Back-end/Docker
[Docker] Dockerfile 만들기
moguogu
2021. 7. 28. 19:59
Docker 기초
- 도커 파일 작성하기
- 주의 할 점:
Dockerfile
이라는 이름으로 파일을 생성해야 함
- 주의 할 점:
- 도커 파일의 명령어 파악하기
FROM
: 베이스 이미지 명시, 이미지 생성시 기반이 되는 이미지 레이어 ex) <이미지이름>: <태그>- ex) FROM alpine
RUN
: 도커 이미지가 생성되기 전에 수행할 쉘 명령어- ex) RUN command
CMD
: 컨테이너 시작시 실행 될 명령어를 명시해 준다-> 도커파일 내에 1번만 사용 가능- ex) CMD ["echo", "hello"]
- 본격적인 예시 코드
FROM node:10
#경로지정
WORKDIR /usr/src/app
#종속성 다운로드
COPY package.json ./
RUN npm install
#경로 안에 모든 파일 컨테이너 안으로 복사
#소스만 변경 하는 부분을 반영해 주기 위한 부분 (종속성은 다시 다운 받지 않음)
COPY ./ ./
CMD ["node","server.js"]
Nodejs로 간단한 어플리케이션을 만들고 빌드 하는 코드이다.
- 도커 빌드를 위한 명령어
docker build ./ #도커파일 빌드 docker build -t test/nodejs ./ #도커 파일 이름설정 후 빌드 docker run -p 5000:8080 test/nodejs:latest #빌드 후 run을 하기 위함 -> 5000은 웹 포트, 8080은 개발 환경 포트
도커를 빌드 후, run 을 하는 경우 nodejs의 port를 8080으로 연결해 두었다.
이것을 내 컴퓨터에서 5000번에서 열기 위한 명령어이다.
- nodejs 코드
server.js
const express=require('express');
const PORT=8080;
//app
const app=express();
app.get('/',(req,res)=>{
res.send("hello world");
})
app.listen(PORT);
console.log("sever is running");
package.json
{
"name": "docker-node",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"dependencies": {
"express":"^4.17.1"
},
"author": "",
"license": "ISC"
}