Docker Compose 配置文件中文件结构 volumes挂载目录

Docker 应用已经成为我们日常的生产力工具。Docker Compose 方式部署应用也成为我们在 NAS 中部署 Docker 应用的主要那个方式之一。本文简单描述 docker-compose.yml 配置文件中文件结构、volumes挂载目录,不涉及专业的内容。

什么是 Docker Compose

Docker Compose 是一个用于定义和管理多容器的 Docker 工具,通过一个 docker-compose.yml 文件,您可以配置应用程序需要的所有服务并轻松管理它们。

Docker Compose 项目地址:https://github.com/docker/compose/


Docker Compose 文件结构

Docker Compose 文件通常命名为 docker-compose.yaml,它使用 YAML 语法来描述服务、网络和存储空间。一个基本的 Compose 文件结构如下:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "90:80"
    volumes:
      - ./html:/usr/share/nginx/html

  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - ./data:/var/lib/mysql
  • version:定义 Docker Compose 文件的版本。
  • services:定义应用中的各个服务。在这个例子中,定义了 webdb 两个服务。
  • image:指定服务使用的 Docker 镜像,例如 nginxmysql
  • ports:定义主机与容器之间的端口映射,90:80 意思是着将NAS主机的 90 端口映射到容器的 80 端口,容器可以通过NAS_IP+90端口访问NAS主机。
  • volumes:定义存储空间目录与容器目录的映射关系,用于数据持久化。
  • environment:用于为容器中的服务设置环境变量,例如设置数据库密码、API 密钥和其他配置选项。

环境变量详解
在这个例子中:

  • MYSQL_ROOT_PASSWORD:设置 MySQL 数据库的根密码为 example
  • MYSQL_DATABASE:创建一个名为 mydatabase 的数据库。
  • MYSQL_USER:创建一个名为 user 的数据库用户。
  • MYSQL_PASSWORD:为上述用户设置密码为 password

这些环境变量会在容器启动时传递给 MySQL 服务,并用于初始化数据库。


volumes 挂载路径

在使用 Docker 配置 docker-compose.yml 文件时,需要将容器内的数据目录挂载到 NAS 的本地文件夹以实现数据持久化。然而,有时我们可能不清楚如何正确表示本地文件夹路径,尤其是针对 NAS 的存储空间。

在 Docker Compose 文件中,volumes 的挂载路径通常按照以下格式表示:<宿主机目录>:<容器目录>

    volumes:
      - ./html:/usr/share/nginx/html
Docker Compose 配置文件中文件结构 volumes挂载目录 - 科学上网 IYIO.NET

示例中,./html:/usr/share/nginx/html 是一种存储空间挂载配置。

  • ./html:其中 ./ 代表当前 Docker Compose 文件所在的目录,也就是我们选择的路径。
  • ./html指的是 Docker Compose 文件所在目录下的 html 子目录。
  • /usr/share/nginx/html:容器路径。将本地的 html 文件夹挂载到容器内的 /usr/share/nginx/html 文件夹。

当你在主机的 ./html 目录下添加、修改或删除文件时,这些更改会立即反映在容器的 /usr/share/nginx/html 目录中,容器内的更改也会同步到主机的 ./html 目录


飞牛OS 通过 Docker Compose 安装Lucky

简单实例

Lucky官方Docker Compose 安装说明

Docker Compose 配置文件中文件结构 volumes挂载目录 - 科学上网 IYIO.NET

在飞牛OS中打开 Docker -> Compose -> 新增项目

Docker Compose 配置文件中文件结构 volumes挂载目录 - 科学上网 IYIO.NET
  • 项目名称:lucky
  • 路径:本地文件夹
  • 来源:创建docker-compose.yml
  • 勾选创建项目后立即启动

复制以下Docker Compose配置:

    services:
      lucky:
        image: gdy666/lucky:latest #镜像名 latest 为最新版本。
        container_name: lucky
        volumes:
          - ./config:/goodluck # 配置文件存放路径
        network_mode: host # 网络模式
        restart: always #重启策略 当容器停止或崩溃时自动重启

参数说明

  • image:指定 Docker 镜像,latest 为最新版本。
  • restart:定义容器重启策略,always当容器停止或崩溃时自动重启。
  • volumes:映射 NAS 本地文件夹到容器内的路径
    • ./:文件存放路径:/vol1/1000/Docker/lucky
    • ./config:配置文件存放路径/vol1/1000/Docker/lucky/config
  • network_mode:设置容器的网络模式为 host。
Docker Compose 配置文件中文件结构 volumes挂载目录 - 科学上网 IYIO.NET

在docker compose配置文件中,volumes是什么意思,举例说明,docker-compose 挂载目录,docker-compose的volumes配置保存本地文件夹