Docker-Compose 持久数据问题

2024-01-09

我在配置持久数据时遇到问题Mariadb。 我在用着docker-compose,每个服务都在一个容器中(Nginx, PHP-FPM and Mariadb)。 一切正常,除了Mariadb不存储数据。每次重新启动容器时,我都会丢失所有数据。然后我发现我可以使用另一个容器来保存数据,而且它甚至不需要运行。

所以我正在使用,在Mariadb容器volume_from内容容器。但是当我这样做时,当我尝试映射体积时/var/lib/mysql, 容器MariaDb不启动。

Error

2015-12-29 12:16:40 7f2f02e4a780
InnoDB:文件操作中操作系统错误编号 13。
InnoDB:该错误意味着mysqld没有访问权限
InnoDB:目录。

该错误是指有关卷权限的问题,但我尝试通过设置权限Dockerfile在两个容器中,问题仍然存在。我有点失落。我使用的是 OSX,所以我相信这是 OSX 问题。谁可以帮我这个事?

这是我的代码:

我的 Docker 撰写



content:
  build: containers/content
  container_name: content
  hostname: content
  volumes:
    - /var/lib/mysql
mariadb:
  build: containers/mariadb
  container_name: mariadb
  hostname: mariadb
  ports:
    - "3306:3306"
  volumes_from:
    - content
  environment:
    - MYSQL_ROOT_PASSWORD=mariadb
    - TERM=xterm
    - PORT=3306
  

MariaDB Dockerfile



FROM debian:jessie

RUN apt-get update && apt-get install -y  mariadb-server

EXPOSE 3306
  

内容 Dockerfile



FROM debian:jessie

VOLUME /var/lib/mysql

CMD ["true"]
  

我这样做的方式是使用 busybox 来存储与 mariadb 共享的所有数据。然后使用--volumes-from在 mariadb 中链接该目录。请看一下我的简化版compose.yml file.

db-data:
  container_name: db-data
  image: busybox:latest
  volumes:
    - /data/mysql:/var/lib/mysql

db:
  container_name: db
  image: million12/mariadb
  restart: always
  volumes_from:
    - db-data
  environment:
    - MARIADB_USER=admin
    - MARIADB_PASS=my_pass

现在,所有数据库文件也可以在主机操作系统上访问,并且不应该存在任何权限问题。

docker-compose 2.0 更新

version: '2'
volumes:
  database:

services:
  db:
    container_name: db
    image: million12/mariadb
    restart: always
    volumes_from:
       - database
     environment:
       - MARIADB_USER=admin
       - MARIADB_PASS=my_pass

您可以通过运行命令来查看 docker 在硬盘驱动器上存储该卷的位置:
docker volume inspect docker_database

[
{
    "Name": "docker_database",
    "Driver": "local",
    "Mountpoint": "/var/lib/docker/volumes/docker_database/_data",
    "Labels": null,
    "Scope": "local"
}

]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker-Compose 持久数据问题 的相关文章

随机推荐

  • 仅当持久化时 ID 为空时如何生成 ID

    我有两个不同的组件 它们使用两个不同的数据库 但实体位于两个数据库上 并且我希望它始终具有相同的 ID 所以基本上当 ID 为空时我希望它自动生成 如果它不为空则使用 ID 我正在使用休眠 Id Column name COLUMN ID
  • Android 自定义画笔图案/图像

    我有一个 8x8 的图像 位图 可以更改 我想做的是能够绘制一个形状 给定Path and Paint对象到我的SurfaceView 目前我所能做的就是用纯色填充形状 我怎样才能用图案来绘制它 在图像中您可以看到画笔图案 十字 它可以是任
  • 我的布局在低 dpi 设备上无法正确缩放

    我制作了一个带有约束布局的 Android 应用程序 即使我使用 SP 和 DP 作为单位 布局也无法正确缩放 我仔细检查了所有值 它们都有 dp 和 sp 我在以下模拟器 5 1 pixel pixel 10 平板电脑 pixel 2 p
  • IndexError:迭代两个 webelement 列表时列表索引超出范围

    我试图在终端上打印结果 但收到此错误消息 IndexError list index out of range 以下是代码 提前感谢您的帮助 这个领域真正的初学者 import pandas as pd from selenium impo
  • JavaScript:修改对象变量的原型?

    这是一个对象 var obj new function this prop 我尝试做类似的事情 obj prop prototype new attr some value 我想做的是永久修改obj prop包含新属性 据我了解 所有 对象
  • 通过考虑夏令时将 UTC 转换为 EST

    我想通过注意 PHP 中的夏令时将 UTC 时间转换为 EST 这就是我到目前为止所做的 from UTC to EST format Y m d H i s date date 2106 03 15 23 00 00 UTC time d
  • 在 macOS Sierra 上安装 Virtualbox 5.1.10 时出错,“安装失败”

    我刚刚购买了一台全新 闪亮的 MacBook Pro 我正在设置我的开发环境 我从网站下载 Virtualbox 5 1 10 并安装 但出现错误 安装失败 查看日志 Nov 28 10 41 51 Zacks MBP installd 3
  • 将 pandoc 从 1.19 更新到 2.4 后,R markdown pandoc 文档转换失败,错误 1

    我最近在 Windows 上安装了 pandoc 2 4 但转换失败 所有编织均出现错误 1 我不会编写 html word 和 pdf 错误说 output file template knitmd pandoc exe template
  • MATLAB 测量函数运行时间

    如何在 MATLAB 中打印函数的时间 example TAKE TIME A 2 1 3 1 2 5 3 5 4 U S V svd A FINISH TIME 语法是什么 您还可以使用非单例形式抽动和TOC http www mathw
  • 所有 Flash 游戏都可以轻松移植到 adobe air 以便在 ios 上部署吗?

    所有 Flash 游戏都可以轻松移植到 adobe air 以便在 ios 上部署吗 例如 如果我在 AS3 中开发 2D 平台游戏 我是否可以简单地将其重新打包以便使用 Adob e AIR 部署在 iOS 上 而无需修改代码库 如果可能
  • 当两者使用同一线程时,如何忽略被广播接收器杀死的前台服务?

    我正在创建一个应用程序 当电话状态改变时它总是想触发 电话状态侦听器 但是我的几分钟后广播接收器被 Android 杀死所以我创建了一个前台服务来保持应用程序在后台运行 但问题是 在我安装应用程序后 我通过单击按钮在 MainActivit
  • Python 等价于内联函数或宏

    我刚刚意识到做 x real x real x imag x imag 比实际操作快三倍 abs x 2 其中 x 是复数的 numpy 数组 为了代码的可读性 我可以定义一个类似的函数 def abs2 x return x real x
  • Google 地图 API 密钥错误“您的网站 URL 需要授权”

    我搜索了很多链接并阅读了与 google api key 相关的文档 但每次我都会收到唯一的错误Your site URL to be authorized 我正在创建一个PhoneGap 混合应用我不确定是否必须将哪个 URL 传递给 g
  • GoogleMaps v3 API 单击时仅创建 1 个标记

    我成功地创建了一个点击标记 但是 使用以下代码 每次点击我都会得到一个新标记 我只希望添加一个标记 如果有人点击多次 我希望它将现有标记移动到新标记任何人都可以帮忙这是代码 function placeMarker location var
  • 解压缩 zip 文件会出现“java.util.zip.ZipException:无法读取版本”或“java.util.ZipException 无法读取本地标头版本 45”

    我只想提取一个普通的 zip 文件 但它总是失败 这是我现在使用的代码 private File downloadPath new File Environment getExternalStorageDirectory Test file
  • Facebook 提示用户登录两次

    我有一个 Android 应用程序 可通过 Facebook 登录并与 parse com 集成 不幸的是 当用户使用 Facebook 登录时 授权 Web 视图会启动两次 我已经广泛搜索了合适的解决方案 但还没有找到 我也玩过 Face
  • 使用 JavaScript 发送邮件

    我想在用户单击图像时打开一个带有 收件人地址 的新 Outlook 邮件模板 我已经在 html 页面中返回了我的代码 与图像链接 每当它加载时 javascript 都应该打开一个新的邮件模板 但该功能不起作用 请让我知道我的代码有什么问
  • 如何让 SignalR 在断开连接时表现得优雅

    我的应用程序经常会在糟糕的公司网络 代理 防火墙等 下使用 所以我不能依赖套接字 长轮询实际上是我唯一的选择 这是长轮询的最大问题 长轮询在某个时间点断开连接 我自动重新连接 根据文档 用户单击导致集线器方法调用的内容 但尚未建立连接 发生
  • 使用 MediaRecorder 录制音频 webm 时没有元数据

    对于我的项目 我使用 MediaRecorder 录制用户音频 它几乎工作正常 当我希望使用 Wavesurfer js 显示用户录音的波形时 我的问题就出现了 但它不会加载我的录音 不过 使用音频元素播放录音效果很好 在尝试不同的源之后
  • Docker-Compose 持久数据问题

    我在配置持久数据时遇到问题Mariadb 我在用着docker compose 每个服务都在一个容器中 Nginx PHP FPM and Mariadb 一切正常 除了Mariadb不存储数据 每次重新启动容器时 我都会丢失所有数据 然后