레알윙 2023. 5. 29. 15:09
반응형

https://github.com/rlawls1991/commerce/tree/main/docker

 

GitHub - rlawls1991/commerce: 내가 만드는 커머스

내가 만드는 커머스. Contribute to rlawls1991/commerce development by creating an account on GitHub.

github.com

 

docker를 이용하여 MySQL 서버 및 Redis 서버를 관리하고자 한다.
버전은 3버전을 선택했으며, docker 이미지는 biarms/mysql 5.7 및 redis 5.08버전을 사용하기로 하였다.

그리고 MySQL 같은 경우 Master/Slave 구조로 작성하였다.

version: '3'
services:
  mysql-master:
    image: biarms/mysql:5.7
    volumes:
      - ./sql/mysql_db/master:/mysql
      - ./sql/commerce/review:/review
      - ./sql/commerce/product:/product
      - ./sql/commerce/user:/user
      - ./sql/commerce/escrow:/escrow
      - ./seeding_m1.sh:/docker-entrypoint-initdb.d/seeding.sh
      - ./db/conf/master:/etc/mysql/conf.d
    environment:
      - TZ=Asia/Seoul
      - MYSQL_ROOT_PASSWORD=1234
      - MYSQL_DATABASE=user
      - MYSQL_USER=app_commerce
      - MYSQL_PASSWORD=test1234
    ports:
      - "53060:3306"
    networks:
      - docker-net

  mysql-slave:
    image: biarms/mysql:5.7
    volumes:
      - ./sql/mysql_db/slave:/mysql
      - ./sql/commerce/review:/review
      - ./sql/commerce/product:/product
      - ./sql/commerce/user:/user
      - ./sql/commerce/escrow:/escrow
      - ./seeding_m1.sh:/docker-entrypoint-initdb.d/seeding.sh
      - ./db/conf/slave:/etc/mysql/conf.d
    depends_on:
      - mysql-master
    environment:
      - TZ=Asia/Seoul
      - MYSQL_ROOT_PASSWORD=1234
      - MYSQL_DATABASE=user
      - MYSQL_USER=app_commerce
      - MYSQL_PASSWORD=test1234
    ports:
      - "53070:3306"
    networks:
      - docker-net

  redis-cluster:
    image: redis:5.0.8
    volumes:
      - ./redis:/redis
    environment:
      - START_PORT=30001
      - END_PORT=30003
      - TIMEOUT=1000
      - REPLICAS=0
      - PASSWORD=1234
    ports:
      - "30001-30003:30001-30003"
    entrypoint: /redis/docker-entrypoint.sh
    networks:
      - docker-net

networks:
  docker-net:
    driver: bridge

 

우선 스키마를 실제 운영에서 사용하는 것처럼 review, escrow, product, user 스키마로 분류를 하였다.

 

위와같이 분류한 이유는 실제 위메프에서 배웠던 내용들을 사용하고 있다.

(스키마가 다른 경우 API를 이용하여 데이터 조회)

 

 

반응형