我正在尝试编写自己的mariadb-alpine码头工人形象。一切正常,但是当我尝试收集mariadb日志时,我什么也没得到。我试图关注this之类的许多相关问题,但都没有成功。
FROM alpine:edge
COPY my.cnf /etc/mysql/my.cnf
RUN set -ex \
&& apk add mariadb mariadb-client shadow \
&& ln -snf /usr/lib/mariadb /usr/lib/mysql \
&& mysql_install_db --user=mysql --skip-name-resolve --auth-root-authentication-method=socket --auth-root-socket-user=root --force --rpm --skip-test-db \
&& usermod -a -G tty mysql \
&& ln -sf /dev/stdout /var/log/mysqld.err \
&& chown -h mysql:mysql /var/log/mysqld.err
CMD ["mysqld_safe"]
EXPOSE 3306
mysqld是否需要pid = 1才能工作stdout?就我而言,如下所示。
# ps aux
PID USER TIME COMMAND
1 root 0:00 {mysqld_safe} /bin/sh /usr/bin/mysqld_safe
134 mysql 0:00 /usr/bin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mariadb/plugin --user=mysql --log-error=/var/log/mysqld.err --pid-file=49ea99ae9348.p
166 root 0:00 sh
171 root 0:00 ps aux
答案 0 :(得分:0)
您可能会遇到以下问题:
当您更改用户帐户时,使用alpine的某些东西会破坏访问/ dev / stdout的能力。我使用的解决方法涉及:
我不确定是否需要最后一部分,并且您可能无权使用mysql命令来执行此操作。您已经在做第二项了。剩下的第一项可以实现:
docker run -t your_image
或在撰写文件中
services:
mysql:
image: your_image
tty: true
....
唯一的另一种选择是直接将您的应用程序作为mysql运行,而不是使用compose文件中的user: mysql
以root身份启动它,但是mysql本身可能不支持。
如果这些都不起作用,那么官方图像使用的选项是选择一个debian基本图像而不是高山图像。您可以在此处查看其Dockerfile:
https://github.com/docker-library/mysql/blob/696fc899126ae00771b5d87bdadae836e704ae7d/8.0/Dockerfile