设置 Docker 以使用文件系统文件夹存储数据库,UBUNTU?

Set up Docker to Use a Filesystem Folder to store Databases, UBUNTU?

我刚开始使用Docker(CE),相对小白

我安装在 UBUNTU 18.04.

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs)  stable" 
sudo apt-get update
sudo apt-get install docker-ce
sudo docker run --name some-postgres -v "/home/parallels/Desktop/Orthanc Dropbox/OrthancConfigs/postgres:/var/lib/postgresql/data" -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres

然后我在 UBUNTU 上安装了 DBeaver,并且在 运行 连接 image/container 之后我能够连接到 postgres(我需要阅读更多内容以了解其中的区别)。我想将其配置为使用本地文件系统文件夹来存储数据库,而不是在 运行 图像时让它们成为非持久性的。在 Orthanc Dropbox 文件名中包含“space”可能存在问题,但不确定我是否可以更改它,因为我正在 运行ning 他们的客户端并且它会自动执行此操作。您可以在 Dropbox 中使用符号链接,但要同步的实际文件必须位于 Dropbox 文件夹中,而不是符号链接中。如果他们支持相反的安排就好了。

我看到有很多配置选项,尤其是当您使用 .yaml 配置文件时。理想情况下,我希望在启动系统时启动 Postgres Docker 并在关闭系统时将其关闭,以便操作相对无缝,但我希望将数据库文件存储在系统文件中系统或安装的文件系统文件夹上,可能在 Dropbox 文件夹本身内,因为它会自动将该文件夹中的所有内容与 Dropbox Cloud 同步。

如果我能让它工作,我可能也想对 LAMP 堆栈(MySQL、Apache、PHP 7.4,以及数据库如上)和 NGINX 服务器。实际上,将 NGINX、PHP-FPM 和 Postgres 打包到我自己的自定义容器中甚至会更好。

所以目标是:

  1. 带有 Postgres、NGINX、PHP-FPM 7.4 的自定义 Docker 容器,带有数据库、Web 目录和文件系统上的配置文件。
  2. 带有 Apache、MySQL、PHP 7.4 的自定义 Docker 容器,带有数据库、Web 目录和文件系统上的配置文件。

我可以进一步阅读文档,但我认为这真的没有那么难,而且似乎应该有一些已经制作的 Docker 图像可以做一些非常相似的事情。

另一种选择是对 Postgres 使用 Docker images/containers,对我的文件系统上的数据库文件使用 MySQL,然后只需安装 Apache、NGINX、PHP/PHP-FPM ,在我的系统上。这样我就可以将 Docker 用于数据库,将我的系统用于其余部分。

所以:

  1. 带有 Postgres 的自定义 Docker 容器,在文件系统上带有 DB。
  2. 带有 MySQL 的自定义 Docker 容器,带有文件系统上的数据库。

我有一些 .sh 脚本可以对一些数据库文件进行滚动备份,所以我想如果我愿意的话,会有一种方法可以将这些与 Docker 图像一起使用,尽管这可能不是必需的在云端备份。

谢谢。

数据库,无论是MySQL还是Postgres,对文件系统的要求都比较严格。

基于 archival/sharing 的 Dropbox 连接器不太可能满足这些要求。

同一存储上的多个并发实例化肯定是不可能的。

在本地推荐 运行 并让备份机制将其备份推送到基于 Dropbox 的存储。这样,除了灾难恢复之外,您实际上还有一个备份。