Docker 및 MariaDB/MySQL - 원격 액세스를 사용하도록 my.cnf를 영구적으로 편집
Macintosh에서 Docker를 실행하고 있으며 MariaDB 이미지를 설치했습니다.저는 LAN의 다른 기계에서 그것에 접속하고 싶습니다.
해결책은 다음을 가능하게 하는 것으로 알고 있습니다.bind-address=0.0.0.0
(또는 유사한 것)에서./etc/mysql/my.cnf
실행했습니다.docker exec -it mariadb bash
Joe 텍스트 편집기(Vi나 Nano보다 훨씬 익숙하기 때문에)를 설치하고 파일을 편집했습니다.
문제는 도커 이미지를 다시 시작하면 변경 사항을 모두 잊어버리고 작동하지 않는다는 것입니다.
제가 실수를 한 건가요, 아니면 이런 식으로 진행하는 게 아닌가요?
용기는 설계상 일회용이며, 새로 용기를 실행하면 수정 내용이 손실됩니다.
두 가지 옵션이 있습니다.
첫 번째는 여기에 설명되어 있습니다. 도커: 이미지를 빌드할 때 my.cnfin을 편집합니다(사용자 정의 구성을 마운트하고 완료하기만 하면 됩니다).
두 번째 옵션은 공식 이미지 + 수정 사항을 기반으로 사용자 정의 컨테이너 이미지를 만드는 것입니다.
Dockerfile
:
# Lets say mariadb v10.3.28... Change for what you want.
FROM mariadb:10.3.28
# there is already `#bind-address=0.0.0.0` in /etc/mysql/my.cnf
# we use sed and replace it with `bind-address=0.0.0.0`)
RUN sed -i "s/#bind-address=0.0.0.0/bind-address=0.0.0.0/g" /etc/mysql/my.cnf && \
# and, for example, lets change `max_allowed_packet` too.
sed -i "s/max_allowed_packet.*/max_allowed_packet=512M/g" /etc/mysql/my.cnf;
(엄지 규칙은 영상 레이어를 저장하기 위해 "한 번의 실행에서 가능한 한 많은 단계를 수행"하는 것입니다.)
그러면:
$ cd /where/my/dockerfile/is
$ docker build . -t mymysql
실행:
# In newer mariadb it should be `-e MARIADB_ROOT_PASSWORD=`
# And maybe you should mount datadir somewhere `-v /my/own/datadir:/var/lib/mysql`
$ docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mymysql
언급URL : https://stackoverflow.com/questions/60593161/docker-and-mariadb-mysql-permanently-editing-my-cnf-to-enable-remote-access
'programing' 카테고리의 다른 글
spring @AutoWired Map을 사용할 수 있습니까? (0) | 2023.08.18 |
---|---|
Xcode 4에서 iOS 프로젝트에 정적 라이브러리 연결 (0) | 2023.08.13 |
Mocking boto3 S3 클라이언트 메소드 Python (0) | 2023.08.13 |
문자열을 줄로 분할하는 가장 좋은 방법 (0) | 2023.08.13 |
standard_init_linux.go:190: exec 사용자 프로세스로 인해 "해당 파일 또는 디렉터리가 없습니다" - 도커 (0) | 2023.08.13 |