Docker 공식 mysql 이미지 사용자 정의 구성 방법

WBOY
풀어 주다: 2023-05-27 13:34:06
앞으로
1264명이 탐색했습니다.

코드 복사 코드는 다음과 같습니다.

$ docker run --name some-mysql -e mysql_root_password=my-secret-pw -d daocloud.io/mysql:tag

some-mysql은 컨테이너의 이름을 지정하고, my-secret -pw는 루트 사용자의 비밀번호를 지정하고 태그 매개변수는 원하는 mysql 버전을 지정합니다

이렇게 하면 데이터가 유지되지 않으므로 로컬 디렉터리를 시작 매개변수에 마운트해야 합니다

그래서 데이터베이스는 실행 중이었는데, 최근 프로그램에서 이모티콘 표현을 지원해야 하고, mysql의 문자셋도 변경되어야 합니다.

코드 복사 코드는 다음과 같습니다.

$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e mysql_root_password=my-secret-pw -d daocloud.io /mysql: tag

이때 사용자 정의 구성 파일을 마운트할 수 있습니다. 공식 문서에는 mysql 서비스가 시작되면 /etc/mysql/my.cnf가 구성 파일로 사용된다고 명시되어 있습니다. /etc/mysql/conf.d .cnf 접미사가 있는 디렉터리의 모든 파일입니다. 이러한 파일은 /etc/mysql/my.cnf 파일의 구성을 확장하거나 재정의합니다. 따라서 고유한 구성 파일을 생성하여 mysql 컨테이너의 /etc/mysql/conf.d 디렉터리에 마운트할 수 있습니다.


따라서 데이터베이스 구성을 변경하는 가장 쉬운 방법은 호스트 시스템에서 새 구성 파일을 생성하고 이를 utf8mb4

[client]

default-character-set=utf8mb4


[mysqld]

character-set-client-handshake = false

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set=utf8mb4
로그인 후 복사
로 변경하는 것입니다

docker cp /home/my.cnf(宿主机文件路径) [容器id]:/etc/mysql/mysql.conf.d
로그인 후 복사

그런 다음 파일을 해당 docker 컨테이너 폴더에 복사합니다

# docker run --name mysql-b \
> -p 33002:3306 -v /zc/mysql/datadir-b:/var/lib/mysql \
> -e mysql_root_password='123456' -d mysql:latest
로그인 후 복사

마지막으로 docker stop을 사용합니다. 컨테이너를 다시 시작하는 명령을 시작하여 사용자 지정 구성 로드를 구현했습니다.


docker의 공식 mysql 이미지로 구성된 컨테이너를 시작할 수 없습니다.

mysql의 docker 이미지를 사용하고 있습니다. 먼저 이미지를 생성하고 시작하세요.

docker exec -it mysql-b bash
로그인 후 복사

정상적으로 시작하세요. 문제 없습니다. 일반적으로 mysql을 사용할 때에는 매개변수를 설정해야 합니다. 매개변수를 설정하려면 먼저 컨테이너의 bash를 입력하고 작업을 수행해야 합니다.

# cat >test.cnf <<eof
[mysqldump]
user=root
password=&#39;123456&#39;
[mysqld]
max_allowed_packet=8m
lower_case_table_names=1
character_set_server=utf8
max_connections=900
max_connect_errors=600
default-character-set=utf8
eof
로그인 후 복사

mysql의 기본 구성 파일은 /etc/mysql/my.cnf 파일입니다. 구성을 사용자 정의하려면 /etc/mysql/conf.d 디렉터리에 .cnf 파일을 생성하는 것이 좋습니다. 새로 생성된 파일은 접미사가 cnf이면 임의로 이름을 지정할 수 있습니다. 새로 생성된 파일의 구성 항목은 /etc/mysql/my.cnf의 구성 항목을 재정의할 수 있습니다. mysql의 공식 docker 이미지는 vim 편집기를 제공하지 않기 때문에 cat 명령을 사용하여 파일을 생성하고 내용을 추가했습니다.

default-character-set=utf8
로그인 후 복사

종료 후 컨테이너를 중지했다가 다시 시작하면 컨테이너가 가능하다는 것을 알았습니다. 시작하지 마십시오.

Solution

시작할 수 없는 원래 컨테이너를 삭제하세요. 새 컨테이너를 다시 만듭니다. 문제의 핵심은 원본 test.cnf 파일에 오류가 있다는 것입니다. 원본 구성 파일의 마지막 줄을 찾으세요:

docker run -it --rm mysql:tag --verbose --help > help.txt
로그인 후 복사
이 줄을 삭제하세요. 구성 파일을 추가할 때 그러한 줄이 없는지 확인하십시오.

문제 원인

mysql의 공식 도커 이미지에는 최신 라벨 아래 [mysqld] 구성 섹션에 기본 문자 집합 구성 항목이 없습니다.

모든 구성 항목을 보려면 다음 명령을 사용하고 파이프라인을 사용하여 출력 도움말을 help.txt 파일에 넣을 수 있습니다.
rrreee

여기서 태그는 최신 및 5.6과 같은 이미지 태그를 나타냅니다.


위 내용은 Docker 공식 mysql 이미지 사용자 정의 구성 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿