programing

기존 데이터베이스가 있는 Mariadb 다단계 컨테이너

nicescript 2022. 10. 10. 20:28
반응형

기존 데이터베이스가 있는 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

반응형