首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于MariaDB的自定义RockyLinux码头图像

基于MariaDB的自定义RockyLinux码头图像
EN

Stack Overflow用户
提问于 2021-10-22 10:08:03
回答 1查看 322关注 0票数 1

为了测试目的,我正在尝试基于新发布的MariaDB 构建一个自定义的停靠映像。然而,由于缺少systemd,运行服务、准备初始数据库模式(如设置根密码、导入数据等)似乎很复杂。即使通过python启用systemctl (变通方法),当遇到systemctl启动mariadb时,构建过程也会停止。

Dockerfile:

代码语言:javascript
复制
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

代码语言:javascript
复制
[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
EN

回答 1

Stack Overflow用户

发布于 2021-10-24 18:31:12

我不确定python解决方案是否引用了船坞-系统-替换脚本。然后,只剩下一个问题,即单个运行需要服务的“启动”和“停止”。

有一个mysql的工作示例可以显示它的缺省值。https://github.com/gdraheim/docker-systemctl-images/blob/master/centos-lamp-stack.dockerfile

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69675021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档