5. expose_vs_ports

docker-compose.yml ํŒŒ์ผ์˜ service ํ•˜์œ„์˜ syntax ๋กœ expose ์™€ ports ๊ฐ€ ์žˆ๋‹ค. ๋‘˜๋‹ค ๋„คํŠธ์›Œํฌ ํฌํŠธ ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด์ธ๋ฐ, ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ๊ณผ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•œ๋‹ค.

expose

  • ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ๋ฅผ ๋ฌธ์„œํ™”

  • ๋™์ผํ•œ Docker ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์ด ํฌํŠธ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

  • expose์— ์ •์˜ํ•œ ํฌํŠธ๋Š” ์™ธ๋ถ€์—๋Š” ๋…ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์˜ค์ง ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ ๋‚ด์˜ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋“ค๋งŒ ์ ‘๊ทผ

ports

  • ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ๋ฅผ ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ์— ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

  • ports๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ์— ์™ธ๋ถ€์—์„œ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ

expose ์™€ ports ์˜ ์ฐจ์ด์ 

expose ๋Š” ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ports๋Š” ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” expose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์ด ์ปจํ…Œ์ด๋„ˆ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ports๋Š” ์™ธ๋ถ€ ์š”์ฒญ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ผ์šฐํŒ…ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ docker-compose.yml ํŒŒ์ผ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” web ์„œ๋น„์Šค๊ฐ€ 5000 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ด๋ฅผ ์™ธ๋ถ€์— ๋…ธ์ถœ์‹œํ‚ค๋ฉฐ, db ์„œ๋น„์Šค๋Š” 5432 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ๋งŒ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

version: '3.8'

services:
  db:
    container_name: postgres
    image: postgres:14.11-alpine
    restart: always
    ports:
      - '5433:5432'
    volumes:
      - ./docker/db_data:/var/lib/postgresql/data
    networks:
      - nestjs-backend
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=backend
    healthcheck:
      test: ['CMD', 'pg_isready', '-U', 'postgres']

  app:
    image: node-local:0.1
    container_name: node-local
    build:
      context: .
      dockerfile: ./docker/Dockerfile.local
    ports:
      - '8000:80'
    volumes:
      - ./src:/app/src
    command: >
      sh -c "npm run mig:local:run && npm run start"
    networks:
      - nestjs-backend
    depends_on:
      db:
        condition: service_healthy

networks:
  nestjs-backend:
    driver: bridge

์„œ๋น„์Šค db๋Š” ํ˜ธ์ŠคํŠธ์˜ 5433 ํฌํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ 5432ํฌํŠธ๋ฅผ ๋งคํ•‘ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์™ธ๋ถ€์˜ 5433 ํฌํŠธ์—์„œ ์ ‘๊ทผํ•˜๋ฉด, ์ด ์š”์ฒญ์€ ๋‚ด๋ถ€ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ 5432 ํฌํŠธ๋กœ ๋งคํ•‘๋œ๋‹ค. ์ด ์„ค์ •์œผ๋กœ, ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ datagrip๊ณผ ๊ฐ™์€ IDEํˆด์—์„œ ์ปจํ…Œ์ด๋„ˆ์˜ database ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ports๋ฅผ ์‚ญ์ œํ•˜๊ณ , expose 5432๋งŒ ์„ค์ •ํ•œ๋‹ค๋ฉด, ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , app ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

์„œ๋น„์Šค app์€ ํ˜ธ์ŠคํŠธ์˜ 8000 ํฌํŠธ์™€ ๋‚ด๋ถ€ ์ปจํ…Œ์ด๋„ˆ์˜ 80ํฌํŠธ๋ฅผ ๋งคํ•‘ํ•˜์—ฌ, ์™ธ๋ถ€์˜ 8000 ํฌํŠธ์—์„œ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ๋‚ด๋ถ€ ์ปจํ…Œ์ด๋„ˆ์˜ 80ํฌํŠธ์™€ ์—ฐ๊ฒฐํ•œ๋‹ค.

Last updated