반응형
기존 데이터베이스가 있는 Mariadb 다단계 컨테이너
기존 데이터베이스로 컨테이너를 만들고 배포하기 전에 컨테이너에서 몇 가지 작업을 수행해야 합니다.실전 가동 시에는 매우 큰 데이터베이스가 몇 개 있습니다.
[root]# ls /home/db-backup/test/prepare/26_06_2020/full/
ibdata1
ib_logfile0
ib_logfile1
ibtmp1
mysql
performance_schema
my_existing_database1
my_existing_database2
my_existing_database3
컨테이너를 게시하면 됩니다.my_existing_database1
우리 팀을 위해서.
Dockerfile을 많이 해봤는데 방법을 찾을 수가 없고 왜 그런지 모르겠어요.다음은 간단한 도커 파일입니다.
FROM mariadb:latest as builder
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes
# for easier debug, i will remove that in prod
RUN sed -i '/\[mysqld\]/a plugin-load-add = auth_socket.so' /etc/mysql/my.cnf
WORKDIR /initialized-db
COPY ibdata1 .
COPY mysql ./mysql
COPY performance_schema ./performance_schema
COPY my_existing_database1 ./my_existing_database1
COPY db-init.sh /docker-entrypoint-initdb.d/
RUN chown mysql:mysql . \
&& chmod 660 ibdata1 \
&& chmod +x /docker-entrypoint-initdb.d/db-init.sh
RUN ["/usr/local/bin/docker-entrypoint.sh", "mysqld", "--datadir", "/initialized-db", "--aria-log-dir-path", "/initialized-db"]
# No file named test
RUN ls /initialized-db/
FROM mariadb:latest
COPY --from=builder /initialized-db /var/lib/mysql
보시다시피, 저는 제 대본을 실행하려고 합니다.db-init.sh
. 간이판:
#!/bin/bash
set -e -x
mysql -u root -e "CREATE USER 'test'@'%' IDENTIFIED BY 'test';"
touch /initialized-db/test
안타깝게도 내 스크립트는 파일로 실행되지 않습니다.test
작성되지 않았습니다.나는 그 일을 회피하려고 합니다./usr/local/bin/docker-entrypoint.sh
독자적인 스크립트(일부 편집이 끝난 파일의 카피/삭제)를 사용하고 있습니다만, 동작하지 않습니다(유저와 파일).test
작성되지 않았습니다).
이것 좀 도와주실래요?
데이터용의 디렉토리를 마운트 해, 배포하는 것을 추천합니다.
컨테이너 자체와 구분해야 하는 경우 해당 데이터베이스의 구성을 편집하여 커스텀 데이터 디렉토리를 사용하고 데이터베이스 내의 데이터베이스를 초기화할 수 있어야 합니다.RUN
그리고.COPY
.
언급URL : https://stackoverflow.com/questions/62617982/mariadb-multi-stage-container-with-an-existing-database
반응형
'programing' 카테고리의 다른 글
INSERT INTO SELECT는 매우 느리지만 INSERT 또는 SELECT는 여러 번 실행할 때 빠릅니다. (0) | 2022.10.10 |
---|---|
for-loop의 setTimeout이 연속된 값을 인쇄하지 않음 (0) | 2022.10.10 |
Vuetify : 카드 내 2줄 (0) | 2022.10.10 |
array_diff()가 어레이에서 문자열 변환 오류를 발생시키는 이유는 무엇입니까? (0) | 2022.10.10 |
InnoDB: XXX.ibd 파일의 147456 바이트 사전 할당이 오류 2로 인해 실패했습니다. (0) | 2022.10.10 |