728x90
반응형
≣ 목차
Docker 설치
도커 컴포즈는 개발 환경 세팅이라고 생각하고, 프로젝트 파일과 별개로 docker-compose.yml 파일을 생성해도 된다.
docker-compose.yml 파일을 열고 작성한다.
vi docker-compose.yml
docker-compose.yml
services:
mysql-docker:
image: mysql:latest
container_name: "mysql"
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 1234
TZ: Asia/Seoul
platform: linux/x86_64
volumes:
- ./schema.sql:/schema.sql
redis-docker:
image: redis:latest
command: redis-server --requirepass 1234 --port 6379
container_name: "redis"
labels:
- "name=redis"
- "mode=standalone"
ports:
- 6379:6379
schema.sql
-- 유저
DROP TABLE IF EXISTS user;
CREATE TABLE IF NOT EXISTS user (
id BIGINT NOT NULL COMMENT '유저 PK',
amount DECIMAL(7,0) COMMENT '잔액',
PRIMARY KEY (id)
) ENGINE=InnoDB;
-- 대기열
DROP TABLE IF EXISTS waiting_token;
CREATE TABLE IF NOT EXISTS waiting_token (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '대기열 PK',
user_id BIGINT COMMENT '유저 PK',
token VARCHAR(255) NOT NULL COMMENT '토큰 정보(uuid)',
waiting_token_status ENUM('ACTIVATE','DEACTIVATE','EXPIRED') COMMENT '대기열 토큰 상태',
created_at DATETIME(6) COMMENT '대기열 토큰 요청 시간',
modified_at DATETIME(6) COMMENT '상태 변경 시간',
PRIMARY KEY (id),
UNIQUE (token)
) ENGINE=InnoDB;
-- 콘서트
DROP TABLE IF EXISTS concert;
CREATE TABLE IF NOT EXISTS concert (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '콘서트 PK',
name VARCHAR(20) NOT NULL COMMENT '콘서트 이름',
host VARCHAR(10) NOT NULL COMMENT '콘서트 주최자',
PRIMARY KEY (id)
) ENGINE=InnoDB;
-- 콘서트 날짜
DROP TABLE IF EXISTS concert_schedule;
CREATE TABLE IF NOT EXISTS concert_schedule (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '콘서트 날짜 PK',
concert_id BIGINT COMMENT '콘서트 PK',
concert_date DATE NOT NULL COMMENT '콘서트 날짜',
PRIMARY KEY (id)
) ENGINE=InnoDB;
-- 콘서트 좌석
DROP TABLE IF EXISTS concert_seat;
CREATE TABLE IF NOT EXISTS concert_seat (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '콘서트 좌석 PK',
concert_id BIGINT COMMENT '콘서트 PK',
concert_schedule_id BIGINT COMMENT '콘서트 날짜 PK',
seat_number INT NOT NULL COMMENT '콘서트 좌석 번호',
seat_price DECIMAL(7,0) COMMENT '콘서트 좌석 금액',
modified_at DATETIME(6) COMMENT '상태 변경 시간',
expired_at DATETIME(6) COMMENT '좌석 임시 배정 만료 시간',
user_id BIGINT COMMENT '유저 PK',
seat_status ENUM('AVAILABLE','RESERVED','TEMPORARY') COMMENT '콘서트 좌석 상태',
PRIMARY KEY (id)
) ENGINE=InnoDB;
-- 예약
DROP TABLE IF EXISTS reservation;
CREATE TABLE IF NOT EXISTS reservation (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '콘서트 예약 PK',
concert_seat_id BIGINT NOT NULL COMMENT '콘서트 좌석 PK',
user_id BIGINT NOT NULL COMMENT '유저 PK',
concert_name VARCHAR(20) NOT NULL COMMENT '콘서트 이름',
concert_date DATE NOT NULL COMMENT '콘서트 날짜',
reservation_status ENUM('CANCELED','RESERVED','RESERVING') COMMENT '예약 상태',
created_at DATETIME(6) COMMENT '콘서트 예약 요청 시간',
modified_at DATETIME(6) COMMENT '상태 변경 시간',
PRIMARY KEY (id)
) ENGINE=InnoDB;
-- 결제
DROP TABLE IF EXISTS payment;
CREATE TABLE IF NOT EXISTS payment (
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '콘서트 결제 PK',
reservation_id BIGINT COMMENT '콘서트 예약 PK',
price DECIMAL(7,0) COMMENT '결제 금액',
payment_state ENUM('PENDING', 'CANCELED','COMPLETED') COMMENT '결제 상태',
created_at DATETIME(6) COMMENT '콘서트 결제 요청 시간',
modified_at DATETIME(6) COMMENT '상태 변경 시간',
PRIMARY KEY (id),
UNIQUE (reservation_id)
) ENGINE=InnoDB;
실행
docker-compose: 여러 docker 컨테이너를 정의하고 관리할 수 있는 도구. 하나의 구성 파일로 정의하고 명령어 하나로 실행할 수 있다.
-f: 사용할 compose 파일을 지정한다.
up: compose 파일에 정의된 서비스들을 생성하고 시작한다. 필요한 경우 이미지를 빌드하고 컨테이너를 생성한다음 모든 컨테이너를 연결하고 시작한다.
-d: 컨테이너를 백그라운드에서 실행하도록 지정한다. 이 옵션을 사용하지 않으면 컨테이너의 로그가 현재 터미널에 출력되고 터미널을 차지하게 된다.
docker-compose -f docker-compose.yml up -d
MySQL
Redis
728x90
반응형
'Develop > Feature' 카테고리의 다른 글
[Redis] Redisson vs Lettuce vs Spring data redis (0) | 2024.07.31 |
---|---|
Redis (0) | 2024.07.23 |
Filter, Interceptor (0) | 2024.07.16 |
Mac Node.js 설치 (0) | 2024.06.24 |
Swagger UI 사용 (0) | 2024.06.12 |
댓글