docker安装likeadmin:Could not open file ‘/var/log/mysql/error.log’ for error logging

遇到这个问题是因为 mysql 的配置文件中使用了一个不存在的文件来记录日志。但一般情况下,我会把mysql的配置文件 和 log 文件 map 到外面,以方便更改配置和查看日志。

究其根源,likeadmin 的 mysql配置文件如下:

[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql
log-error   = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_connections=1000

而 docker-compose 中相关定义如下:

  mysql:
    container_name: likeadmin-mysql
    image: registry.cn-guangzhou.aliyuncs.com/likeadmin/mysql:5.7.44 #X86架构
    #image: registry.cn-guangzhou.aliyuncs.com/likeadmin/mysql:5.7.29-amd64 #arm架构
    restart: always 
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./data/mysql5.7.29/lib:/var/lib/mysql
      - ./config/mysql/mysqld.cnf:/etc/mysql/my.cnf
    networks:
      - likeadmin
    ports:
      - "3306:3306"

下面是分析过程:

首先查看这个镜像:registry.cn-guangzhou.aliyuncs.com/likeadmin/mysql:5.7.44 ,它看起来是私有的,里面是否有定制改动?

我们拉取公共镜像,发现镜像ID值都是 5107333e08a8, 这说明 likeadmin 只是对此镜像做了一个转存,并没有改动任何东西。

其次,再来看产生问题的文件:/var/log/mysql/error.log ,这并不是一个正常的 mysql 日志文件,因为 mysql 默认的日志文件是存储在其安装目录下的,所以如果镜像没有改动,那就说明此文件不存在,不但文件不存在,连这个目录/var/log/mysql/也不存在。

所以问题就很好解决了,那就是让 docker-compose 在启动之前创建它,并设置它的权限:
创建目录,创建文件,设置权限
entrypoint: bash -c "mkdir -p /var/log/mysql && touch /var/log/mysql/error.log && chown -R mysql:mysql /var/log/mysql/error.log && exec /entrypoint.sh mysqld"

更改之后是:

  mysql:
    container_name: likeadmin-mysql
    image: registry.cn-guangzhou.aliyuncs.com/likeadmin/mysql:5.7.44 #X86架构
    #image: registry.cn-guangzhou.aliyuncs.com/likeadmin/mysql:5.7.29-amd64 #arm架构
    restart: always 
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./data/mysql5.7.29/lib:/var/lib/mysql
      - ./config/mysql/mysqld.cnf:/etc/mysql/my.cnf
    networks:
      - likeadmin
    entrypoint: bash -c "mkdir -p /var/log/mysql  && touch /var/log/mysql/error.log && chown -R mysql:mysql /var/log/mysql/error.log && exec /entrypoint.sh mysqld"
    ports:
      - "3306:3306"

这就可以了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇