서버 세팅 & tool/docker
[windows] mariadb 세팅, docker 배포
방푸린
2024. 2. 18. 17:07
반응형
환경: windows11, springboot2.7.6, java17
2024.02.18 - [서버 세팅 & tool/docker] - [windows] gateway server 세팅, docker 배포
2024.02.04 - [서버 세팅 & tool/kafka] - [windows] kakfa connect; mariadb 설치
마리아 DB는 프로젝트가 아니기 때문에 별도 폴더를 만들고 그 안에서 Dockerfile과 필요한 폴더 생성
기존에 로컬에서 작업 시 생성했던 쿼리를 그대로 도커에 올릴 예정
그러려면 로컬에 마리아 디비 설치 경로와, 해당 쿼리 파일이 있는 곳을 파악해야 함
로컬 디비 작업 파일 복사
- 아래와 같은 방식대로 했을 때 잘 진행되지 않음.. 해결방법은 별도로 작성
C:\Program Files\MariaDB 11.2\data
해당 경로로 가서 아래 내용 확인
data 폴더를 그대로 복사
도커 파일 작성
FROM mariadb
ENV MYSQL_ROOT_PASSWORD test1357
ENV MYSQL_DATABASE mydb
COPY ./mysql_data/data /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["mysqld"]
에러 발생
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "mysqld": executable file not found in $PATH: unknown.
다른 방식으로 진행
버전 관련 문제인 듯하여 로컬에서 만들어진 데이터 베이스를 쿼리로 덤프 떠서 그걸 사용하는 방식으로 전환
1. cmd를 관리자 모드로 열기
2. 아래 명령어 실행
3. 해당 경로에 mydb.sql 생성 확인
4. 해당 파일을 Dockerfile 이 있는 경로에 옮기 도커 파일 수정
FROM mariadb
ENV MYSQL_ROOT_PASSWORD test1357
ENV MYSQL_DATABASE mydb
COPY ./mydb.sql /docker-entrypoint-initdb.d/
EXPOSE 3306
5. 도커 빌드 & 실행
docker build -t haileyjhbang/my-mariadb:1.0 .
docker run -d -p 3306:3306 --network ecommerce-network --name mariadb haileyjhbang/my-mariadb:1.0
6. 도커 로그 확인
docker logs 컨테이너id
7. 도커 이미지 삭제
잘못 만들어진 이미지들을 지우기 위해서는 아래 명령어 사용
docker rmi 컨테이너id
8. 도커의 mariaDB에 접속하여 권한 등 확인
docker exec -it mariadb bin/bash
// 도커 안, 디비에 붙으면
mariadb -h127.0.0.1 -uroot -p
// 디비 접속
//127.0.0.1 is not allowed to connect to ~sever 라는 에러가 뜨면 localhost로 시도
grant all privileges on *.* to 'root'@'%' identified by 'test1357';
// 모든 데이터베이스의 root라는 계정에 ip address 허용
flush privileges;
// 내용 반영
기타 명령어들로 mydb 데이터베이스 안 테이블/데이터가 덤프뜬대로 잘 나오는 것도 확인 가능
728x90
반응형