docker 컨테이너에 올려져있는 mysql 로 접속해야했다.
docker에 대해 자세히는 모르던 상태라 삽질이 조금 필요했다.
1. docker-compose.yml
Docker compose : 여러 개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여, 관리하는 기능
도커 컴포즈 파일은 커맨드를 통해 한번에 그 파일로부터 설정을 읽어들여 모든 컨테이너 서비스를 실행시키는 것이 가능하다. 그러니까 아주아주아주 간단했다.
docker-compose.yml이 존재했기에 작성할필요 없이 그 파일이 있는 곳에서 바로 컨테이너에 올리는 작업을 진행하면 되었다.
docker compose up -d
여기서 중요한 부분이 있다. (나는 경로문제로 몇번이고 다시 시작했었다!)
위의 커맨드를 실행하기 전 도커 컴포즈 파일을 확인해야 한다.
services:
mysql:
user: 501:20
image: mysql:8.0.33
ports:
- 13306:3306
volumes:
- /Users/shinbi/dev/mysql_docker/data:/var/lib/mysql:rw
- /Users/shinbi/IdeaProjects/backend-preonboarding/src/main/resources/initdb:/docker-entrypoint-initdb.d
command:
- '--character-set-server=utf8mb4'
- '--collation-server=utf8mb4_unicode_ci'
environment:
MYSQL_ROOT_PASSWORD: 비밀번호
MYSQL_DATABASE: 데이터베이스
여기서 volumes에 해당하는 경로로 인해 머리가 아팠었는데 그건 내가 도커를 잘 이해하고 있지 않아서 발생한거였다.
docker-entrypoint-initdb.d를 찾아가는 경로에서 git clone한 프로젝트 파일 안, 즉 docker-compose.yml 파일이 있는 곳의 경로를 지정해야한다. 이게 진짜 진짜 중요하다.
더 자세한 설명은 새로운 글로 써야겠다.
아무튼 docker compose up -d 를 하게 되면 도커 컨테이너에 올라간다.
2. Mysql 연결하기
먼저 docker ps 명령어를 통해 실행되고 있는 도커를 확인한다. 그러면 id를 확인할 수 있다.
그리고 그 id에 해당하는 곳으로 들어간다.
docker exec -it 도커ID bash
해당 bash가 열리면 mysql 에 접속한다. root로 접속 후
mysql -u root -p
도커 컴포즈 파일에 환경 변수로 정해져 있던 비밀번호로 접속한다.
그러면 mysql 로 접속할 수 있다 !!!!! 성공이다 성공
근데 나는 여기서 지정되어 있는 데이터베이스로 가서 쿼리문을 해봐야하기에 더 과정이 남았다 !
application.yml에 있는 database 정보를 확인하고 접속해야한다.
접속하기 위해 root에서 다른 user로 권한을 부여해준다. 진짜 끝이다 !
* 알아두면 유용한 docker 명령어
실행되고 있는 컨테이너 확인 : docker ps
삭제 : docker rm 아이디
멈추기 : docker stop 아이디
'Tech > DevOps' 카테고리의 다른 글
[CI/CD] Github Actions를 이용한 테스트 및 빌드 자동화(SpringBoot/Docker image 생성/Docker Hub 업로드) (0) | 2024.04.21 |
---|---|
[IntelliJ] 테스트 커버리지(Test coverage), 테스트 코드 측정하기 (0) | 2024.03.26 |
[CI/CD] Kubernetes Cluster 환경 구축 (0) | 2023.12.13 |
[CI/CD][Docker] VM 환경에 Docker Engin 설치 (1) | 2023.12.08 |
[CI/CD] Vagrant란? (0) | 2023.12.07 |
댓글