Docker로 언제든지 다시 만들 수 있는 로컬 DB를 만들어 봤습니다.
여러분이 업무 개발을 할 때 DB는 어떻게 했습니까?각자 지역 DB를 준비했습니까?아니면 공용 DB 를 사용합니까?
나는 평소에 업무 개발 때 검증용 DB에 자주 연결된다.본공연과는 다른 DB가 있는데, 개발할 때는 그 DB를 다 같이 쓰는 느낌이었다.여러분이 같은 DB를 쓰니까 조건이 맞으면 되지만, 다른 사람도 쓰는 물건이라 함부로 훼손해서는 안 된다.
이럴 때는 로컬이 망가져도 바로 다시 만들 수 있는 DB가 있으면 편리할 것 같아서 이번에 Docker로 해봤어요.
디렉토리 구조
mysql8입니다.0과 mysiql5.일곱 개를 만들었기 때문에 구성은 다음과 같다.
root/
├─ Dockerfile-5-7
├─ Dockerfile-8-0
├─ db-5-7
├─ db-8-0
├─ config
└─ my.conf
그중 하나만 있으면 되는 경우 아래와 같습니까?root/
├─ Dockerfile
├─ db
├─ config
└─ my.conf
my.conf 생성
config 아래 my.conf를 만들고 mysql 설정을 작성하십시오.
my.conf
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
상술한 내용에 따르면 mysql에서 일본어는 부호화되지 않을 것이다.Dockerfile-5-7
※mysql5.7 사용하지 않을 때는 필요 없어요.
Dockerfile-5-7
FROM mysql:5.7.34
ENV MYSQL_ROOT_PASSWORD rootpass
ENV MYSQL_DATABASE test
ENV MYSQL_USER testuser
ENV MYSQL_PASSWORD testpass
COPY ./config/my.conf /etc/mysql/conf.d/my.cnf
# docker build -t docker-mysql-5-7:1 -f Dockerfile-5-7 .
# docker run --name docker-mysql-5-7 -d -v $PWD/db-5-7:/var/lib/mysql -p 23306:3306 docker-mysql-5-7:1
# docker exec -it docker-mysql-5-7 bash
이것은 mysql에 로그인할 때의user와password입니다.
build
docker build -t docker-mysql-5-7:1 -f Dockerfile-5-7 .
를 사용하는 Docker file을 지정합니다.아무것도 지정하지 않으면 Docker file이라는 파일을 찾습니다.이번에는 Docker file-5-7 파일을 사용해야 하기 때문에 지정했습니다.부팅
docker run --name docker-mysql-5-7 -d -v $PWD/db-5-7:/var/lib/mysql -p 23306:3306 docker-mysql-5-7:1
-f
에 컨테이너의 이름을 지정합니다.--name
에 볼륨을 지정합니다.내 컴퓨터가 이 명령을 실행한 곳의db-5-7 디렉터리와/var/lib/mysiql가 동기화되었습니다.-v
에 포트를 지정합니다.-p
자신의 PC의 23306번 포트에 접근하면 도커 용기의 3306번 포트에 접근할 수 있다.-p 23306:3306
는 방금 제작한 docker 이미지를 사용합니다.docker 용기 로그인 & mysql 로그인
docker exec -it docker-mysql-5-7 bash
상기 명령을 통해 docker 용기에 로그인합니다.mysql -u testuser -p
testpass
이렇게 mysql에 로그인하면 완성됩니다.Dockerfile-8-0
※mysql8.0이 아닌 경우 필요 없음
평소7을 사용하다가 갑자기 8.0이 되면 연결이 되지 않을 수 있습니다.
참조: https://www.chuken-engineer.com/entry/2020/09/04/074216
Dockerfile-8-0
FROM mysql:8.0
ENV MYSQL_ROOT_PASSWORD rootpass
ENV MYSQL_DATABASE test
ENV MYSQL_USER testuser
ENV MYSQL_PASSWORD testpass
COPY ./config/my.conf /etc/mysql/conf.d/my.cnf
# docker build -t docker-mysql-8-0:1 -f Dockerfile-8-0 .
# docker run --name docker-mysql-8-0 -d -v $PWD/db-8-0:/var/lib/mysql -p 13306:3306 docker-mysql-8-0:1
# docker exec -it docker-mysql-8-0 bash
이것은 mysql에 로그인할 때의user와password입니다.
build
docker build -t docker-mysql-8-0:1 -f Dockerfile-8-0 .
를 사용하는 Docker file을 지정합니다.아무것도 지정하지 않으면 Docker file이라는 파일을 찾습니다.이번에는 Docker file-5-7 파일을 사용해야 하기 때문에 지정했습니다.부팅
docker run --name docker-mysql-8-0 -d -v $PWD/db-8-0:/var/lib/mysql -p 13306:3306 docker-mysql-8-0:1
docker-mysql-5-7:1
에 컨테이너의 이름을 지정합니다.-f
에 볼륨을 지정합니다.내 컴퓨터가 이 명령을 실행한 곳의db-8-0 디렉터리와/var/lib/mysql가 동기화되었습니다.--name
에 포트를 지정합니다.-v
면 자신의 PC의 1336번 포트에 접근하면 도커 컨테이너의 3306번 포트에 접근할 수 있다.-p
는 방금 제작한 docker 이미지를 사용합니다.docker 용기 로그인 & mysql 로그인
docker exec -it docker-mysql-8-0 bash
상기 명령을 통해 docker 용기에 로그인합니다.mysql -u testuser -p
testpass
이렇게 mysql에 로그인하면 완성됩니다.데이터 복제
mysql에 로그인했는지 모르겠지만 데이터가 없습니다.
mysqldump를 사용하여 공용 DB에서 데이터를 복사합니다.
다음 명령을 실행합니다.
mysqldump -u ユーザー名 -p -h 共用DBのホスト名 データベース名 > 〇〇.sql
sql 파일의 이름은 모두 가능합니다. 이번에는 {항목명 + 날짜}입니다.sql가 결정되었습니다.다음에 제작된 ql 파일을 컨테이너에 보냅니다.
방법은 간단하다. 아래 명령만 집행하면 된다.
mysql5.7 의 경우
docker cp {プロジェクト名 + 日付}.sql docker-mysql-5-7:/tmp/
mysql8.0의 경우docker cp {プロジェクト名 + 日付}.sql docker-mysql-8-0:/tmp/
※ 이후는 mysql5.7의 명령만 표시됩니다.mysql8.0을 사용하는 사람은 적당히 고쳐 쓰십시오.이렇게 되면, sql 파일은 용기의 tmp 디렉터리로 전송됩니다.
이번에는 이 ql 파일을 사용하여 docker가 만든 DB에 데이터를 넣습니다.
먼저 도커 컨테이너에 로그인하세요.
docker exec -it docker-mysql-5-7 bash
다음 명령을 실행합니다mysql -u testuser -p test < tmp/{プロジェクト名 + 日付}.sql
데이터는 Docker를 통해 생성된 DB에 복사됩니다.애플리케이션에서 접속
응용 프로그램에서 Docker가 만든 DB에 연결합니다.
이 방법도 매우 간단하다.아마도 호스트 이름,user, 비밀번호 등을 지정하는 곳이 있을 것입니다.그저 그곳을 아래의 모습으로 바꿀 뿐이다.mysql8.0을 사용하여 상술한 방법으로 시작하는 사람port은 1336이다.
host: '127.0.0.1',
user: 'testuser',
password: 'testpass',
database: 'test',
port: 23306,
총결산
그게 다야.Docker 로컬에서 사용할 수 있는 DB를 만들 수 있습니다.이것을 사용하면 데이터를 삭제할 수 있는 지령도 주저하지 않고 실행할 수 있다.실패하면 다시 하면 돼.
주의점은 PC의 전원을 끊으면 용기도 멈추기 때문에 다음 부팅 때 사용하려면 용기를 다시 부팅해야 한다.데이터가 아직 남아 있으니 안심하세요.
-p 13306:3306
에서 mysql의 용기 ID를 찾고 docker-mysql-8-0:1
에서 시작합니다.
Reference
이 문제에 관하여(Docker로 언제든지 다시 만들 수 있는 로컬 DB를 만들어 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/jojojo/articles/f1223bb06cf5be텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)