docker compose up
: 실행 (이미지가 없을 때만 빌드 + 실행)
docker compose up --build
: 실행 ( 무조건 새로운 이미지 빌드 + 실행), 소스코드 수정 시 해당 명령어 사용
docker compose down
: 실행된 컨테이너 중지
하나의 터미널에서 컨트롤 하기
docker compose up -d --build
-d
: 앱을 백그라운드에서 실행 (앱에서 나오는 output 표출 하지 않고 빠져나옴)
docker-compose.yml
version: "3" # 도커 컴포즈 버전
services: # 실행시킬 컨테이너들
redis-server: # 컨테이너 이름
image: "redis" # 컨테이너에서 사용되는 이미지
node-app: # 컨테이너 이름
build: . # 현 디렉토리에 있는 Dockerfile 경로
ports: # 포트 맵핑 -> 로컬 포트: 컨테이너 포트
- "3000:8080"
# docker-compose up
# YAML
# Ain't markyp language 의 약자
# json, xml 파일과 같이 파일 및 데이터가 저장, 전송하는 파일
server.js
const express = require('express');
const redis = require('redis');
// 레디스 클라이언트 생성
const client = redis.createClient({
// 기본 실행 환경 : "https://redis-server.com"
// 도커 실행 환경 : docker-compose.yml 명시한 컨테이너 이름
host: "redis-server",
port: 6379 // 레디스 기본 port
})
const app = express();
// 숫자 0부터 시작
client.set('number', 0);
app.get('/', (req, res) => {
// 경로 접속할 때마다 number 1씩 증가
client.get('number', (err, number) => {
res.send(` 숫자가 2씩 증가 합니다. ${number}`);
client.set('number', parseInt(number) + 2);
})
})
app.listen(8080, () => {
console.log(`Server is running`);
});
Dockerfile
FROM node:16
WORKDIR /usr/src/app
COPY ./ ./
RUN npm install
CMD [ "node", "server.js" ]
참조 : 인프런강의