Docker ์‹ค์Šต

์ด์Šฌ์•„ยท2025๋…„ 3์›” 21์ผ

LG CNS AM Inspire Camp 1๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
20/20
post-thumbnail

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ช…๋ น์–ด

* Rabbitmq
docker run -d -p 15672:15672 -p 5672:5672 --name rabbitmq --network ecommerce-network -e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=guest rabbitmq:4.0-management

* Mysql
docker run -d -p 13306:3306 --name mysql-server --network my-network -e MYSQL_ROOT_PASSWORD=test1357 mysql:8.0.41

* MariaDB
docker run -d -p 3306:3306 --name mariadb-server --network ecommerce-network -e MARIADB_ROOT_PASSWORD=test1357 mariadb:latest

* Kafka
docker run -d -p 9092:9092 --name broker --network ecommerce-network apache/kafka:latest

* Config-service
docker run -d -p 8888:8888 --name config-service --network ecommerce-network config-service:1.0

* Eureka (Service-discovery)
docker run -d -p 8761:8761 --name service-discovery --network ecommerce-network service-discovery:1.0

* Apigateway-service
docker run -d -p 8000:8000 --name apigateway-service --network ecommerce-network -e spring.rabbitmq.host=rabbitmq apigateway-service:1.0

๐Ÿ‡ RabbitMQ, ๐Ÿฌ MySQL/MariaDB, ๐Ÿงƒ Kafka๋Š” DockerHub์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ณต์‹ ์ด๋ฏธ์ง€ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ mvn ๋นŒ๋“œ๋‚˜ Dockerfile์„ ์ž‘์„ฑํ•  ํ•„์š”์—†์ด docker run ๋ช…๋ น๋งŒ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๊ฐ€๋Šฅ!

โš™๏ธ config-service, eureka, apigateway-service ๋“ฑ ์šฐ๋ฆฌ๊ฐ€ springboot์—์„œ ์ง์ ‘ ๋งŒ๋“  ์„œ๋น„์Šค๋“ค์€ ๋‹น์—ฐํžˆ ๊ณต์‹ ์ด๋ฏธ์ง€๊ฐ€ ์—†์œผ๋‹ˆ Dockerfile์ด ์žˆ์–ด์•ผ ํ•˜๊ณ , mvn package ์ดํ›„์— docker build๋กœ ์ด๋ฏธ์ง€ ๋งŒ๋“  ํ›„ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์•„๋ž˜๋Š” ์ง์ ‘ ๋งŒ๋“  Order-service์˜ ๋„์ปค ์‹คํ–‰ ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

1. Dockerfile ์ž‘์„ฑ

FROM openjdk:17-ea-11-jdk-slim
VOLUME /tmp
COPY target/order-service-1.0.jar order-service.jar
ENTRYPOINT ["java", "-jar", "order-service.jar"]

2. Maven ๋นŒ๋“œ -> jar ํŒŒ์ผ ์ƒ์„ฑ

C:\toy-msa\order-service>mvn clean compile package -DskipTests=true

3. Docker ์ด๋ฏธ์ง€ ์ƒ์„ฑ

C:\toy-msa\order-service>docker build --tag order-service:1.0 -f Dockerfile .

  • ๋งŒ๋“ค์–ด์ง„ ๋„์ปค ์ด๋ฏธ์ง€ ํ™•์ธ

docker-compose๋ž€?

docker-compose๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•œ ๋ฒˆ์— ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด config-service, eureka, apigateway-service, rabbitmq ๋“ฑ๋“ฑ์˜ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์ด๊ฑธ ์ „๋ถ€ docker run ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋งค๋ฒˆ ํฌํŠธ, ๋„คํŠธ์›Œํฌ, ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋‹ค ์จ์•ผ ํ•ด์„œ ๊ท€์ฐฎ์Šต๋‹ˆ๋‹ค.

โœ… ๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•œ ๊ฒŒ docker-compose์ž…๋‹ˆ๋‹ค!
docker-compose up -d๋งŒ์œผ๋กœ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


order-service๋Š” RabbitMQ, Zipkin, MariaDB, Eureka ๊ฐ™์€ ์™ธ๋ถ€ ์„œ๋น„์Šค๋“ค์— ์˜์กดํ•˜๋ฉฐ ๊ทธ ์„œ๋น„์Šค๋“ค๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ(ecommerce-network) ์•ˆ์—์„œ ํ†ต์‹ ํ•ด์•ผํ•˜๋ฏ€๋กœ docker-compose.yml์„ ๋งŒ๋“ค์–ด์„œ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

โœ… docker-compose๊ฐ€ ์žˆ๋Š” ์• ๋“ค์€ Dockerfile์„ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, docker-compose.yml์ด Dockerfile์„ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€ ๋นŒ๋“œ + ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰๊นŒ์ง€ ๋‹ค ํ•ด์ค๋‹ˆ๋‹ค.

4. docker-compose.yml ์ž‘์„ฑ

# Use root/example as user/password credentials
version: '3.1'

services:
  order-service:
    image: order-service:1.0

    environment:
      spring.rabbitmq.host: rabbitmq
      spring.zipkin.base-url: http://zipkin-zipkin-1:9411
      spring.datasource.url: jdbc:mariadb://mariadb-server:3306/mydb
      eureka.client.service-url.defaultZone: http://service-discovery:8761/eureka/
      management.zipkin.tracing.endpoint: http://zipkin-zipkin-1:9411/api/v2/spans

    networks:
      my-network:

networks:
  my-network:
    external: true
    name: ecommerce-network

5. docker-compose ์‹คํ–‰

C:\toy-msa\order-service>docker-compose -f docker-compose-order.yml up -d

  • ๋กœ๊ทธ๋กœ ์˜ค๋ฅ˜ ํ™•์ธ
C:\toy-msa\order-service>docker-compose -f docker-compose-order.yml logs

๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ ์ด์ „์— ์žˆ๋˜ mydb๋ฅผ ์–˜๊ฐ€ ์ฐพ์ง€ ๋ชปํ•ด์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.
๊ทธ๋ž˜์„œ ์‚ญ์ œํ•ด์ฃผ๊ณ  ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋‹ˆ ๋™์ž‘ํ–ˆ๋‹ค.

  • Eureka ํ™•์ธ

  • docker process ํ™•์ธ

  • ์ž„์‹œ USER๋กœ Postman ํ…Œ์ŠคํŠธ

0๊ฐœ์˜ ๋Œ“๊ธ€