Step3-kakao-tech-campus / Team3_BE

[카테캠 1기] 번개 지향 볼링 모집 커뮤니티 "번개볼링"의 백엔드 서버입니다.
2 stars 4 forks source link

서버 환경을 위한 docker-compose mysql 작성 및 create query 작성 #18

Closed jagaldol closed 1 year ago

jagaldol commented 1 year ago

Summary

현재 배포 중인 개발 서버에 db를 h2가 아닌 mysql을 사용하며 product profile을 사용하고자 했습니다. 그런 김에 redis와 함께 mysql도 docker로 띄우는게 좋을 거 같아 docker-compose를 작성했습니다.

Description

docker-compose.yml이 추가 되었습니다. 실 배포 용으로는 docker-compose.yml을 사용하고, 로컬 개발용으로는 docker-compose-redis.yml 만을 사용하면 됩니다.

docker-compose.yml의 mysql 환경 설정(비밀번호)의 경우 .mysql_env로 분리시켰습니다.

그리고 가동중인 mysql과 충돌 나지 않도록 포트를 3306에서 3307로 변경하였고, spring boot 설정에도 mysql의 포트를 3307을 가르키도록 하였습니다.

외부 방화벽을 열어뒀기 때문에 외부에서 db로 직접 접근 가능합니다.

image

설정은 이렇게 적으시면 되고 비밀번호는 개인 문의 부탁드립니다.


테이블 생성 쿼리를 위해 ddl.sql을 작성했습니다. data.sql처럼 프로젝트에 영향 가는 파일은 아니지만 성질이 비슷해 일단 resources 폴더에 넣었습니다.

서버의 db에는 ddl.sql의 쿼리를 실행시켜 테이블들을 생성하고 data.sql의 쿼리를 직접 보내 행정구역 및 더미 계정(김볼링) 데이터를 넣어놨습니다.

행정구역 데이터의 경우, #15 의 쿼리문을 바로 사용하여 넣었습니다.

추가적으로 행정구역 데이터의 정렬이 id순으로 되지 않던데, 찾아보니까 행정구역의 이름에 unique제약을 추가하며 unique 제약이 있는 컬럼에 index가 자동으로 생성되어 정렬이 꼬인(예상했던 id 순이 아니게) 것 같습니다.

{
    "status": 200,
    "response": {
        "cities": [
            {
                "id": 17,
                "name": "강원특별자치도"
            },
            {
                "id": 9,
                "name": "경기도"
            },
            {
                "id": 15,
                "name": "경상남도"
            },
            {
                "id": 14,
                "name": "경상북도"
            },
            {
                "id": 5,
                "name": "광주광역시"
            },
            {
                "id": 3,
                "name": "대구광역시"
            },
            {
                "id": 6,
                "name": "대전광역시"
            },
            {
                "id": 2,
                "name": "부산광역시"
            },
            {
                "id": 1,
                "name": "서울특별시"
            },
            {
                "id": 8,
                "name": "세종특별자치시"
            },
            {
                "id": 7,
                "name": "울산광역시"
            },
            {
                "id": 4,
                "name": "인천광역시"
            },
            {
                "id": 13,
                "name": "전라남도"
            },
            {
                "id": 12,
                "name": "전라북도"
            },
            {
                "id": 16,
                "name": "제주특별자치도"
            },
            {
                "id": 11,
                "name": "충청남도"
            },
            {
                "id": 10,
                "name": "충청북도"
            }
        ]
    },
    "errorMessage": null
}

그래서 이렇게 name이 정렬 기준이 되어 버려 가나다 순으로 정렬되어 나오던데 id 순으로 정렬 할 필요까진 없어 보여 그냥 뒀습니다.

노션 가이드