programing

RockyLinux 기반 맞춤형 MariaDB 도커 이미지

minimums 2023. 9. 15. 20:52
반응형

RockyLinux 기반 맞춤형 MariaDB 도커 이미지

테스트 목적으로 새로 출시된 Rocky Linux를 기반으로 맞춤형 MariaDB 도커 이미지를 구축하려고 합니다.하지만 systemd의 부재로 인해 서비스 운영, root password 설정, 데이터 가져오기 등의 초기 데이터베이스 스키마 준비가 복잡한 것 같습니다.python(해결 방법)을 통해 systemctl을 활성화해도 systemctl start mariadb를 만나면 빌드 프로세스가 중단됩니다.

도커 파일:

FROM rockylinux/rockylinux

# INT
RUN yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
RUN yum install supervisor -y
ADD ./assets/SYS/supervisor.conf /etc/supervisor.conf

# SYS
RUN yum install python2 -y
RUN ln -s /usr/bin/python2 /usr/bin/python
RUN unlink /usr/bin/systemctl
ADD ./assets/SYS/systemctl /usr/bin/systemctl
RUN chmod +x /usr/bin/systemctl

# DBS
RUN yum install mariadb-server -y

# Method 1
RUN systemctl start mariadb
# [ freezes the build process ]

# Method 2
RUN exec /usr/bin/mysqld_safe
# [ runs the service but there is a mysql.sock error ]

# Method 3
RUN exec /usr/libexec/mysqld --defaults-file=/etc/my.cnf --user=root
# [ does not run the service ]

RUN mysql_upgrade -u root --force
RUN mysql -u root -e 'DELETE FROM mysql.user WHERE User="";'
RUN mysql -u root -e 'DELETE FROM mysql.user WHERE User="root" AND Host NOT IN ("localhost", "127.0.0.1", "::1");'
RUN mysql -u root -e 'GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "";'
RUN mysql -u root -e 'DROP DATABASE IF EXISTS test;'
RUN mysql -u root -e 'DELETE FROM mysql.db WHERE Db="test" OR Db="test\\_%";'
RUN mysql -u root -e 'FLUSH PRIVILEGES;'
RUN mysql -u root -e 'CREATE DATABASE somedatabase;'
ADD ./assets/DBS/database.sql database.sql
RUN mysql -u root somedatabase < database.sql
RUN unlink database.sql
RUN mysqladmin password "somepassword"
RUN systemctl stop mariadb

EXPOSE 3306

CMD ["supervisord", "-c", "/etc/supervisor.conf"]

supervisor.conf

[program:mariadb]
command=/usr/bin/mysqld_safe --basedir=/usr 
process_name=%(program_name)s_%(process_num)02d
numprocs=1
autostart=true
autorestart=false
startsecs=0
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0

파이썬 해결책이 도커-시스템 ctl-교체 스크립트를 참조하는지 잘 모르겠습니다.그러면 단일 RUN이 서비스의 "시작"과 "정지"를 모두 필요로 한다는 문제만 남게 됩니다.

mysql에 대한 기본값을 보여줄 수 있는 작동 예제가 있습니다.https://github.com/gdraheim/docker-systemctl-images/blob/master/centos-lamp-stack.dockerfile

언급URL : https://stackoverflow.com/questions/69675021/custom-mariadb-docker-image-based-on-rockylinux

반응형