在 docker 容器中为 gitea

问题描述

我正在尝试设置一个 gitea 容器,在查看官方文档时,对于卷部分,定义了以下内容

 volumes:
  - ./gitea:/data
  - /etc/timezone:/etc/timezone:ro
  - /etc/localtime:/etc/localtime:ro

我知道卷部分用于在 docker-compose 中配置数据库,但我找不到为什么在此处完成此特定配置。有人可以向我解释通过在卷部分中添加的行我们可以实现什么吗?

更具体地说,我们使用 ./gitea:/data,/etc/timezone:/etc/timezone:ro/etc/localtime:/etc/localtime:ro 实现了什么以及为什么需要这样做?

谢谢。

解决方法

卷部分是一种在主机系统和容器之间共享文件和目录的方式。使用 :ro 可以将共享文件设为容器只读。 人们必须明白,容器只是当前构建的快照,例如码头枢纽。每当您删除此容器时,所有数据也会被删除。 因此,卷也用于为数据创建一个地方,这些数据应该是持久的,不受容器移除的影响。

那么这里发生了什么: 使用 /etc/timezone:/etc/timezone:ro,主机系统(运行 docker 守护进程的地方)上的文件 /etc/timezone/etc/timezone (:ro表示只读)在容器内/etc/localtime 也是如此。

这些文件定义了主机上使用的时区。通过与容器共享,它可以在内部用于识别系统时区。

现在关于 ./gitea:/data 行。 与共享文件的方式相同,您也可以共享目录。在您的情况下,预计在您当前所在的任何目录中,都有一个文件夹 gitea(./ 表示 >here

因此,当您启动容器时,容器内的应用程序会将数据写入 /data - 您还可以在 ./gitea 下访问主机上的这些数据。