[Docker/K8S] ์›น ์„œ๋น„์Šค๋ฅผ GKE๋กœ ๋ฐฐํฌํ•˜๊ธฐ(1) - Dockerfile ๊ตฌ์„ฑ, Docker compose๋กœ ํ™•์ธํ•˜๊ธฐ

2025. 11. 11. 11:56ยท๐Ÿณ Docker & Kubernetes
728x90

์ด๋ฒˆ์— ์—…๋ฌด๊ณผ์ •์—์„œ ์ผ๋˜ ํˆด๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ฉด์„œ k8s ์›น ๋ฐฐํฌ๋ฅผ ์ž‘๋…„์— ํ–ˆ๋˜ ๊ธฐ์–ต์„ ๋˜์‚ด๋ ค ๋‹ค์‹œ ๊ณต๋ถ€ํ•ด๋ณด๋ฉด์„œ ํฌ์ŠคํŒ…ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ๋จผ์ € ํ•„์š”ํ•œ dockerfile ๋“ค์„ ์ •์˜ํ•˜๊ณ  ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด๋ณธ๋‹ค.

๋ชฉํ‘œ

  • GKE(Google Kubernetes Engine)์™€ GCE(Google Compute Engine) ๋“ฑ์„ ํ™œ์šฉํ•œ ํ’€์Šคํƒ ์›น ์„œ๋น„์Šค ๋ฐฐํฌํ•˜๊ธฐ
    1. docker file ๊ตฌ์„ฑํ•˜๊ธฐ
    2. kubectl ํ™œ์šฉํ•˜๊ธฐ
    3. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ตฌ์„ฑ์— ๊ด€ํ•œ ์ดํ•ด ๋ฐ ์ ์šฉ
      • Deployment
      • StatefulSet
      • Persistent Volume
      • Service
      • Gateway 
      • Networking
ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์šฉ๋œ docker image๋Š” dockerhub์—์„œ pullํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- mysterias/web-service:latest

1. Docker File ๊ตฌ์„ฑํ•˜๊ธฐ

A. ํ”„๋ก ํŠธ์—”๋“œ / ๋ฐฑ์—”๋“œ Docker Image ๋งŒ๋“ค๊ธฐ

  • ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ณ„๋„ ํ”„๋ ˆ์ž„์›Œํฌ(React ๋“ฑ) ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๋˜ํ•œ ๋‹ค๋ฅธ ์›Œํฌ๋กœ๋“œ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ, ๋‚ด ์›น ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ์—๋Š” jQuery์™€ javascript๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ ๋‚˜๋ˆ„์ง€ ์•Š์•˜๋‹ค.
  • DB๋Š” ๋‹ค๋ฅธ ์›Œํฌ๋กœ๋“œ๋กœ ๋„์šธ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— DB์™€ ๋ฐฑ์—”๋“œ ์•ฑ์ด ์—ฐ๊ฒฐ๋˜๋Š” ๋ถ€๋ถ„์„ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฒ˜๋ฆฌ ํ•ด์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ๋‚˜๋Š” SQLAlchemy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์„œ `create_engine` ์˜ url ๋ถ€๋ถ„์„ ๋‚˜๋ˆ ์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ FastaAPI ์•ฑ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ๋•Œ๋Š” uvicorn์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, ์„œ๋น„์Šค๋ฅผ ํ•  ๋•Œ๋Š” ๋™์‹œ ์š”์ฒญ์ด ๋งŽ์•„์ง€๋ฏ€๋กœ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด gunicorn์œผ๋กœ ๋™์ž‘์‹œํ‚ค๋Š” ๊ฒƒ์„ docker cmd๋กœ ์ •ํ–ˆ๋‹ค.
# Fastapi Dockerfile
FROM python:3.12

# ๋จผ์ € requirements๋งŒ ๋ณต์‚ฌํ•ด์„œ ํ™œ์šฉ
COPY requirements.txt /app/requirements.txt

# ์‹คํ–‰์œ„์น˜ ์ด๋™
WORKDIR /app

# pip ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
RUN pip install --upgrade pip && pip install --no-cache -r requirements.txt

# ์•ฑ ์ฝ”๋“œ ๋ณต์‚ฌ
COPY . /app

# ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
ENV db_user = user
...

# ํฌํŠธ ์„ค์ •
EXPOSE 8080

# ์‹คํ–‰์–ด
CMD ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "main:app", "--bind", "0.0.0.0:8080", "--workers", "2", "--timeout", "60", "--sys-log"]
  • ๋‚˜์ค‘์— ํ•œ ๋ฒˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ์„œ ์ˆ˜์ •ํ•œ ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ, CMD์—์„œ bind ์ฃผ์†Œ๋ฅผ ๋ฐ˜๋“œ์‹œ 0.0.0.0 ์œผ๋กœ ํ•ด์•ผํ•œ๋‹ค. ์ฒ˜์Œ์— ๋ณ„ ์ƒ๊ฐ ์—†์ด localhost๋กœ ํ–ˆ์—ˆ๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ฉด ์ถ”ํ›„ kubernetes ์œ„์— ์˜ฌ๋ ธ์„ ๋•Œ ์„œ๋น„์Šค๋กœ ์™ธ๋ถ€ ๋…ธ์ถœ์„ ์‹œ๋„ํ•ด๋„ ์™ธ๋ถ€๋Š” localhost์— ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ ‘์†์ด ๋˜์ง€ ์•Š๋Š”๋‹ค. 0.0.0.0 ์€ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์ฃผ์†Œ๋ฅผ ํ—ˆ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
    • ๋งŒ์ผ kubenetes ํ™˜๊ฒฝ์— ์˜ฌ๋ฆฌ์ง€ ์•Š๊ณ  ๋กœ์ปฌ์—์„œ๋งŒ ํ…Œ์ŠคํŠธ ํ•˜๊ฑฐ๋‚˜ ์„œ๋น„์Šคํ•  ๊ฑฐ๋ผ๋ฉด ์ƒ๊ด€์—†๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” fastapi ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์™ธ๋ถ€ ๋…ธ์ถœํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ nginx ๋“ฑ ์›น ์„œ๋ฒ„๋ฅผ ์œ„์— ๋ฎ์–ด์„œ ์„œ๋น™ํ•œ๋‹ค.
  • ํ™˜๊ฒฝ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ์ถ”ํ›„ docker compose๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ํ•  ๊ฒƒ์ด๋ผ ๊ตณ์ด dockerfile์— ์ถ”๊ฐ€ํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ๋„ฃ์–ด๋„ ๋œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํ•œ ํ›„์— dockerfile์„ ๋นŒ๋“œํ•ด๋‘”๋‹ค.
docker build -t web-service:251111 .
  • ์ด๋Ÿฌ๋ฉด 251111์ด๋ผ๋Š” tag๋ฅผ ๊ฐ€์ง„ ๋„์ปค ์ด๋ฏธ์ง€ web-service๊ฐ€ ๋กœ์ปฌ์— ์ €์žฅ๋œ๋‹ค.

 

B. DB Docker Image ๋งŒ๋“ค๊ธฐ

  • ํ˜„์žฌ ๋‚ด ์„œ๋น„์Šค์—์„œ DB๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์€ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด์žˆ๋Š” ํŠน์ • user(DB owner)์™€ user์—๊ฒŒ ํ• ๋‹น๋  ํŠน์ •ํ•œ database ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐ€์ง€์˜€๋‹ค.
  • kubernetes์— ์˜ฌ๋ฆด ๋•Œ๋Š” postgres ๊ณต์‹ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ๋กœ์ปฌ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ณ„๋„๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ด์œ ์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”ํ›„์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด์„œ ์„œ์ˆ ํ•˜๊ฒ ๋‹ค.
  • ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ณต์‹์ด๋ฏธ์ง€์— ๋ฏธ๋ฆฌ user์™€ db๋ฅผ ๋งŒ๋“œ๋Š” sql ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ entrypoint๋กœ ๋ณต์‚ฌํ•ด๋‘๋ฉด ๋œ๋‹ค. 
// init.sql
DO
$$
BEGIN
    IF NOT EXISTS (SELECT 1 FROM pg_catalog.pg_roles WHERE rolname = 'dain') THEN
        CREATE ROLE dain WITH LOGIN PASSWORD 'password';
    END IF;
END
$$;

SELECT 'CREATE DATABASE monitor OWNER dain'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'monitor')\gexec
  • ๊ฐ„๋‹จํžˆ ํ•ด์„คํ•˜์ž๋ฉด role name ์ค‘์— dain์ด ์—†์œผ๋ฉด password๋ฅผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ํ•ด์„œ ๋งŒ๋“ค๊ณ , database ์ค‘์— monitor๊ฐ€ ์—†์œผ๋ฉด dain์„ owner๋กœ ํ•ด์„œ ๋งŒ๋“ค์–ด๋ผ~ ๋ผ๋Š” sql ํŒŒ์ผ์ด๋‹ค.
  • ์ด init.sql์„ ๋ณต์‚ฌํ•ด์„œ docker-entrypoint-initdb.d ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋„์ปค๊ฐ€ entrypoint๋กœ ์ธ์‹ํ•˜๊ณ  ์‹คํ–‰ํ•ด์ค€๋‹ค.
# postgreSQL Dockerfile

FROM postgres:15

COPY init.sql /docker-entrypoint-initdb.d
EXPOSE 5432
  • ์ด์ œ docker build๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์›Œ๋‘”๋‹ค.
docker build -t db_postgres:251111 .

 

2. Docker Compose๋กœ ํ™•์ธํ•˜๊ธฐ

A. DB ๊ตฌ์„ฑํ•˜๊ธฐ

  • ๋งŒ๋“  ๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ๊ฐ์˜ container๋กœ ๋„์› ์„ ๋•Œ ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ docker compose๋ฅผ ํ™œ์šฉํ•œ๋‹ค. 
  • fastapi ์•ฑ์˜ ๊ฒฝ์šฐ DB์™€ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ์ฒซ ์Šคํ…์ด๋ฏ€๋กœ fastapi๋ณด๋‹ค postgreSQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋จผ์ € ๋„์›Œ์•ผํ•œ๋‹ค. 
  • ๊ตฌ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
services:
  postgresql:
    image: db_postgres:251111
    container_name: postgresql
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres 
    ports: ["5433:5432"]
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U dain -d energy_monitor"]
      interval: 5s
      timeout: 3s
      retries: 10
  • ํ•˜๋‚˜์”ฉ ๋œฏ์–ด๋ณด์ž. ๋จผ์ € image๋Š” ์•„๊นŒ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌ์›Œ๋’€๋˜ db_postgres:251111 ๋กœ ์„ค์ •ํ–ˆ๋‹ค. tag๋Š” ์ผ์ข…์˜ ๋ฒ„์ „์ด๋ฏ€๋กœ ๊ผญ ์•Œ๋งž์€ ๊ฒƒ์„ ์จ์ฃผ์–ด์•ผํ•œ๋‹ค.
    • ๋งŒ์ผ dockerfile๋งŒ ์žˆ๊ณ  image๋ฅผ ๋ณ„๋„๋กœ ๋งŒ๋“ค์–ด๋‘์ง€ ์•Š์•˜๋‹ค๋ฉด build ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•œ๋‹ค. docker file์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์„œ docker compose up์„ ํ•  ๋•Œ ๊ทธ dockerfile์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ด์ค€๋‹ค.
  • container_name์€ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์•„๋ž˜์— ๋ฌถ์—ฌ์žˆ๋Š” ์ด ์ปจํ…Œ์ด๋„ˆ์˜ ์‹๋ณ„์ž ๊ฐ™์€ ๊ฒƒ์ด๋‹ค. ๊ฐ™์€ ๋จธ์‹  ์•ˆ์—์„œ ๋Œ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ๋“ค ๋ผ๋ฆฌ๋Š” ip ๋Œ€์‹  ์ด ์ด๋ฆ„์œผ๋กœ ์„œ๋กœ๋ฅผ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. fastapi์ชฝ์„ ์ •์˜ํ•  ๋•Œ ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ฒ ๋‹ค.
  • environment ์—๋Š” POSTGRES_USER, POSTGRES_PASSWORD ๊ฐ€ ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๋งˆ์Šคํ„ฐ ๊ถŒํ•œ์„ ๊ฐ–๋Š” user์™€ password๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์ ๋‹นํžˆ ์„ค์ •ํ•ด์ค€๋‹ค.
  • ports๋Š” ์ˆœ์„œ๋Œ€๋กœ [host:๋‚ด๋ถ€] ์ˆœ์„œ๋‹ค. ์™ธ๋ถ€์—์„œ ๋ถ™์„ ๊ฑฐ๋ผ๋ฉด port๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผํ•˜๊ณ , ์ง€๊ธˆ์ฒ˜๋Ÿผ ๋‚ด๋ถ€์—์„œ๋งŒ ๋ถ™์„ ๊ฑฐ๋ผ๋ฉด ๊ตณ์ด ์•ˆ ํ•ด์ค˜๋„ ๋œ๋‹ค.
  • volumes๋Š” container๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ์‚ฌ๋ผ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ˜„์žฌ ์‹คํ–‰ ๋จธ์‹ ์˜ ์ €์žฅ๊ณต๊ฐ„(๋””๋ ‰ํ† ๋ฆฌ)์™€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. /var/lib/postgresql/data ๊ฒฝ๋กœ์— ์ €์žฅ๋˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์‹คํ–‰๋จธ์‹ ์˜ pgdata ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
    • container์—์„œ ๊ฐ€์šฉํ•œ ํŠน์ •ํ•œ ์ €์žฅ๊ณต๊ฐ„ ์˜์—ญ๊ณผ ์‹ค์ œ host machine์˜ ์–ด๋А ์ €์žฅ๊ณต๊ฐ„ ์˜์—ญ์„ ๋งคํ•‘ํ•ด์„œ container์—์„œ ํ•ด๋‹น ์ €์žฅ๊ณต๊ฐ„์— ์ €์žฅํ•˜๋ฉด ๋‚˜์ค‘์— container๋ฅผ ์‚ญ์ œํ•ด๋„ ์‹ค์ œ host machine์˜ ์ €์žฅ๊ณต๊ฐ„์— ์ €์žฅํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค. 
    • volume์€ container์— ๋ฏธ๋ฆฌ ํ• ๋‹น๋œ ์šฉ๋Ÿ‰์„ ์žก์•„๋จน์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฏธ ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์— ์žˆ๋Š” ์ €์žฅ๊ณต๊ฐ„์„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • healthcheck๋Š” ํ˜„์žฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‚ด๊ฐ€ ์„ค์ •ํ•œ๋Œ€๋กœ ์ž˜ ๊ตฌ๋™๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.

 

B. Web ์„œ๋น„์Šค ๊ตฌ์„ฑํ•˜๊ธฐ

  • FastAPI๋ฅผ ์˜ฌ๋ฆฌ๋Š” ์ชฝ๋„ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.
service: 
  postgresql:
    ...
    
  fastapi:
    image: web-service:latest
    container_name: fastapi
    depends_on:
      postgresql:
        condition: service_healthy
    env_file: "docker.env"
    ports: ["8080:8080"]
    restart: on-failure
  • ๋ˆˆ์— ๋„๊ฒŒ ๋‹ค๋ฅธ ์ ์€ depends_on ๋ถ€๋ถ„๊ณผ env_file ์ด๋‹ค. ๋‘ ๊ฐ€์ง€๋งŒ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž.
  • depends_on ์€ ๋ง ๊ทธ๋Œ€๋กœ ์•„๋ž˜ ์ •์˜ํ•œ ๊ฒƒ์— ์˜์กดํ•˜์—ฌ ์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. postgresql์ด๋ผ๊ณ  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ๋ช…์‹œํ–ˆ๊ณ , ์ด ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ(condition)์ด service_healthy, ์ฆ‰ ์ •์ƒ ์ž‘๋™ํ•  ๋•Œ๋งŒ fastapi ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํŒจ ์—†์ด ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
    • ์—ฌ๊ธฐ์„œ postgresql ์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ container๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ๋‘ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ™์€ ํ˜ธ์ŠคํŠธ ๋จธ์‹  ์•ˆ์— ์žˆ๊ณ , ๊ฐ™์€ ๋„คํŠธ์›Œํฌ์— ๋ฌถ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • docker compose๋ฅผ ์˜ฌ๋ฆฐ ๋’ค์— docker network ls ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด 
  • env_file ์€ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋˜๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด๋‹ค. ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์•„์„œ ์ผ์ผํžˆ ๋‹ค ์ ๊ธฐ ๋ญํ• ๋•Œ, ํ˜น์€ ๋‚ด์šฉ์„ ์ˆจ๊ฒจ๋‘๊ณ  ์‹ถ์„ ๋•Œ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ์ €์žฅํ•ด์„œ ๋ถˆ๋Ÿฌ์˜ค๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

C. ์‹คํ–‰ํ•˜๊ธฐ

  • ์šฐ์„  ๋กœ์ปฌ ํ™˜๊ฒฝ์— docker desktop์ด ์‹คํ–‰ ์ค‘์ด์–ด์•ผํ•œ๋‹ค.
  • ์‹คํ–‰ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.
docker compose up
  • ๋งŒ์•ฝ ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ๋กœ ๋นŒ๋“œํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” build๋ฅผ ํ•˜๊ณ  up ํ•˜๋ฉด ๋˜๊ณ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰์„ ์›ํ•˜๋ฉด -d ๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค.

  • ์‹คํ–‰ ํ›„์—๋Š” ํ„ฐ๋ฏธ๋„์— ์ด๋ ‡๊ฒŒ ์ƒํƒœ๊ฐ€ ์˜ฌ๋ผ์˜ค๊ณ , ๊ฐ ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„์„ ์•ž์— ๋ถ™์ด๊ณ  ๋กœ๊ทธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. docker desktop์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ด์ œ localhost:8080 ๋“ฑ์œผ๋กœ ์ ‘์†ํ•ด์„œ ํ™•์ธํ•ด๋ณด๋ฉด ์›น ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” kubernetes gke ์„ค์ •์— ๊ด€ํ•ด ์ด์–ด์„œ ๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์Šฌ์Šฌ ์‹œํ–‰์ฐฉ์˜ค^^๊ฐ€ ๋‹ด๊ธธ ์˜ˆ์ •์ด๋‹ค..

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿณ Docker & Kubernetes' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Docker/K8S] ์›น ์„œ๋น„์Šค๋ฅผ GKE๋กœ ๋ฐฐํฌํ•˜๊ธฐ(3) - DB ์›Œํฌ๋กœ๋“œ ์„ค์ •ํ•˜๊ธฐ  (0) 2025.11.13
[Docker/K8S] ์›น ์„œ๋น„์Šค๋ฅผ GKE๋กœ ๋ฐฐํฌํ•˜๊ธฐ(2) - ๋ฐฑ์—”๋“œ ์›Œํฌ๋กœ๋“œ ๊ตฌ์„ฑํŒŒ์ผ ๋งŒ๋“ค๊ธฐ  (0) 2025.11.12
[Docker + ELK] Docker ELK๋ฅผ ์‚ฌ์šฉํ•ด์„œ PostgreSQL DB ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ธฐ  (1) 2023.12.21
[Docker] Docker ์ž…๋ฌธ - Docker Image, Container, ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ moniwiki ๋ฐฐํฌ ์˜ˆ์ œ๊นŒ์ง€  (1) 2023.04.27
[Docker] Anaconda/Jupyter notebook์„ dockerfile๋กœ ์„ค์น˜ + ์ปค์Šคํ…€ ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ  (0) 2022.08.19
'๐Ÿณ Docker & Kubernetes' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Docker/K8S] ์›น ์„œ๋น„์Šค๋ฅผ GKE๋กœ ๋ฐฐํฌํ•˜๊ธฐ(3) - DB ์›Œํฌ๋กœ๋“œ ์„ค์ •ํ•˜๊ธฐ
  • [Docker/K8S] ์›น ์„œ๋น„์Šค๋ฅผ GKE๋กœ ๋ฐฐํฌํ•˜๊ธฐ(2) - ๋ฐฑ์—”๋“œ ์›Œํฌ๋กœ๋“œ ๊ตฌ์„ฑํŒŒ์ผ ๋งŒ๋“ค๊ธฐ
  • [Docker + ELK] Docker ELK๋ฅผ ์‚ฌ์šฉํ•ด์„œ PostgreSQL DB ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ธฐ
  • [Docker] Docker ์ž…๋ฌธ - Docker Image, Container, ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ moniwiki ๋ฐฐํฌ ์˜ˆ์ œ๊นŒ์ง€
darly213
darly213
ํ˜ธ๋ฝํ˜ธ๋ฝํ•˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž
  • darly213
    ERROR DENY
    darly213
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (109)
      • ๐Ÿฌ ML & Data (55)
        • ๐ŸŒŠ Computer Vision (2)
        • ๐Ÿ“ฎ Reinforcement Learning (17)
        • ๐Ÿ“˜ ๋…ผ๋ฌธ & ๋ชจ๋ธ ๋ฆฌ๋ทฐ (8)
        • ๐Ÿฆ„ ๋ผ์ดํŠธ ๋”ฅ๋Ÿฌ๋‹ (3)
        • โ” Q & etc. (5)
        • ๐ŸŽซ ๋ผ์ดํŠธ ๋จธ์‹ ๋Ÿฌ๋‹ (20)
      • ๐Ÿฅ Web (21)
        • โšก Back-end | FastAPI (2)
        • โ›… Back-end | Spring (5)
        • โ” Back-end | etc. (9)
        • ๐ŸŽจ Front-end (4)
      • ๐ŸŽผ Project (8)
        • ๐ŸงŠ Monitoring System (8)
      • ๐Ÿณ Docker & Kubernetes (7)
      • ๐Ÿˆ Algorithm (0)
      • ๐Ÿ”ฎ CS (2)
      • ๐ŸŒ Networking (0)
      • ๐ŸŒˆ DEEEEEBUG (2)
      • ๐ŸŒ  etc. (10)
      • ๐Ÿ˜ผ ์‚ฌ๋‹ด (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ๋ฐฉ๋ช…๋ก
    • GitHub
    • Notion
    • LinkedIn
  • ๋งํฌ

    • Github
    • Notion
  • ๊ณต์ง€์‚ฌํ•ญ

    • Contact ME!
  • 250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
darly213
[Docker/K8S] ์›น ์„œ๋น„์Šค๋ฅผ GKE๋กœ ๋ฐฐํฌํ•˜๊ธฐ(1) - Dockerfile ๊ตฌ์„ฑ, Docker compose๋กœ ํ™•์ธํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”