mysql - 为什么运行 docker 容器后 mysql 数据所有权更改为 systemd-journal-remote

标签 mysql docker docker-compose mariadb archlinux

我将 mysql 数据库存储在 /home/mysql 中,而不是 /var/lib/mysql 中。该目录曾经属于mysql。但是,当我使用此 yml 文件运行命令 docker-compose up 时:

version: '3'
services:
  mariadb:
    image: mariadb
    restart: always
    volumes:
     - /home/mysql:/var/lib/mysql
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.6.4
    environment:
      - "ES_JAVA_OPTS=-Xms750m -Xmx750m"
      - bootstrap.memory_lock=false
  site:
    build: .
    volumes:
      - "./app:/app"
    links:
      - mariadb:mysql
    environment:
      - DOCKER_IP=172.19.0.2
    depends_on: ['elasticsearch','mariadb']
    ports:
      - "3000:3000"

docker容器能够运行,但是/home/mysql中的整个文件夹和文件都属于systemd-journal-remote,这会导致node 服务器无法连接到 mariadb。我必须停止 docker 实例,恢复 mysql 文件夹所有权并删除 ib_logfile0 和 ib_logfile1 。

为什么安装/home/mysql会导致如此致命的问题?

更新:

我的解决方案是添加用户:“mysql”:

version: '3'
services:
  mariadb:
    image: mariadb
    restart: always
    volumes:
     - /home/mysql:/var/lib/mysql
    user: "mysql"
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.6.4
    environment:
      - "ES_JAVA_OPTS=-Xms750m -Xmx750m"
      - bootstrap.memory_lock=false
  site:
    build: .
    volumes:
      - "./app:/app"
    links:
      - mariadb:mysql
    environment:
      - DOCKER_IP=172.19.0.2
    depends_on: ['elasticsearch','mariadb']
    ports:
      - "3000:3000"

最佳答案

您应该使用--user参数启动Docker的容器。如果您执行此操作并将相同的 uid:gid 设置为 MySQL 存储的所有者,那么您将不会遇到权限问题。您必须检查如何在 Docker Compose 中准确执行此操作,因为我向您展示了正常命令行执行的示例

关于mysql - 为什么运行 docker 容器后 mysql 数据所有权更改为 systemd-journal-remote,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47265916/

相关文章:

mysql - 在 Sql 脚本上计算工作日

mysql - 是否可以将这些查询压缩为一个?

linux - 如何在后台启动 php 服务器作为 docker 容器中的守护进程

Laravel 帆 : login as root or create an root user

Docker Swarm Service - 强制更新已经运行的最新镜像

docker - 网络重启后,Hyperledger Composer Identity Issue错误(代码:20,授权失败)

c# - mysql中SUM()的返回类型是什么?

php - 什么是吃内存的 PHP 脚本

docker - docker compose 有没有办法创建交叉服务常量?

docker - 重新启动后找不到Docker网络