[리눅스 한 학기 살기] #7 Docker Compose 설치

curric·2025년 5월 30일
post-thumbnail

Docker Compose란?


Docker Compose는 단일 서버에서 여러 개의 컨테이너를 하나의 서비스로 정의해, 컨테이너 묶음을 한 번에 관리할 수 있는 환경을 제공하는 Docker의 관리 도구이다.

Docker는 하나의 컨테이너만 실행하는 데 적합하지만, 실제 프로젝트에서는 여러개의 컨테이너가 함께 작동해야한다.
예를 들어 웹 서버(Node.js)와 데이터베이스(PostgreSQL), 캐시 서버(Redis) 등이 함께 실행되어야할 때 사용한다.

Docker Composer를 쓰면 좋은 점

  • 여러 컨테이너를 하나의 설정파일로 관리 가능
  • docker-compose up 한 줄로 프로젝트 전체 실행
  • 컨테이너 간 네트워크 자동 구성
  • 개발 환경 구축이 쉬워지고, 실무와 유사한 구조 구현 가능

Docker Compose 설치 (Ubuntu 24.04 기준)

Docker Compose는 보통 최신 Docker에 내장되어 있겠지만, 버전을 확인하고 최신화하려한다.

  • 설치확인
docker compose version
  • 설치(Docker는 이미 설치되어있는 상태)
sudo apt update
sudo apt install docker-compose -y

설치 후 설치확인 명령어를 통해 버전을 확인할 수 있다.


간단 실습 - Node.js + PostgreSQL 실행


설치만 하고 끝내기 아쉬우니 Docker Compose를 활용해보려 한다.
Node.js와 PostgreSQL을 동시에 실행하는 것을 구성해보려한다.

1) 디렉토리 만들기

mkdir compose-example
cd compose-example

2) Node.js 서버 코드 만들기

mkdir server
cd server

server/index.js 생성

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('리눅스 한 학기 살기 - Docker Compose!');
});

app.listen(port, () => {
  console.log(`http://localhost:${port} 에서 서버 실행 중`);
});

server/package.json 생성

{
  "name": "compose-example",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  }
}

3) Dockerfile 만들기 (Node.js용)

server/Dockerfile

FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]

4) 프로젝트 루트로 이동 후 docker-compose.yml 생성

cd ..

docker-compose.yml

version: '3'
services:
  web:
    build: ./server
    ports:
      - "3000:3000"
    depends_on:
      - db

  db:
    image: postgres
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: testdb

실행해보기

docker compose up

브라우저 http://localhost:3000 에 접속하고,
"리눅스 한 학기 살기 - Docker Compose!" 라는 문구가 출력되면 성공이다.

마무리


Docker Compose를 활용하면 복잡한 서비스 구조를 간단히 정의하고 실행할 수 있다. 실제 실무에서도 거의 모든 프로젝트에 사용되며, FastAPI, Redis, Nginx, Compose로 함께 구성해볼 수 있다.

profile
학생입니다

0개의 댓글