GeekNote
注册
登录

NAS折腾日记之 Docker 搭建数据库

最近重装了NAS上的OMV系统,经过一些基本的设置以后,决定使用Docker搭建自托管应用(如Nextcloud),一来方便折腾,二来配置迁移也方便一些。这次分享一下使用Docker搭建数据库的配置过程。

研究了大半天,我使用Portainer的Stack功能(实际上就是docker-compose)搭建了 MariaDB + PostgreSQL + Adminer 数据库三件套;Adminer是一个Web数据库管理应用,同时支持MySQL/MariaDB、PostgreSQL、SQLite等数据库程序。

先附上我的docker-compose配置,然后我会详细介绍配置的选项:

---
version: "2"
services:
  mariadb:
    image: linuxserver/mariadb
    container_name: mariadb
    environment:
      - PUID=1000
      - PGID=100
      - MYSQL_ROOT_PASSWORD=MariaDB数据库密码
      - TZ=Asia/Shanghai
    volumes:
      - /AppData/mariadb:/config
    ports:
      - 3306:3306
    networks:
      - mynet
    restart: unless-stopped
  
  postgres:
    image: postgres
    container_name: postgres
    environment:
      - POSTGRES_PASSWORD=PostgreSQL数据库密码
    volumes:
      - /AppData/pgdata:/var/lib/postgresql/data
    ports:
      - 5432:5432
    networks:
      - mynet
    restart: unless-stopped
  
  adminer:
    image: adminer
    container_name: adminer
    user: "1000"
    environment:
      - ADMINER_DESIGN=hydra
    #volumes:
    # - /AppData/adminer/adminer.css:/var/www/html/adminer.css
    ports:
      - 5480:8080
    networks:
      - mynet
    restart: unless-stopped

networks:
  mynet:
    external:
      name: mynet

这里使用了由 linuxserver.io 提供的MariaDB镜像,提供了UID与GID的环境配置变量;PostgreSQL和Adminer则使用官方构建的镜像,这里均使用变量设定数据库密码。

其次,我在宿主机的系统盘根目录下创建了 /AppData 目录,并分别创建子目录映射volumes卷,用于容器应用配置数据持久化;

数据库的端口均使用默认的3306与5432进行映射,而Adminer使用宿主机的5480端口映射;三者的重启策略都是unless-stopped;另外还创建了mynet的桥接网络,使容器能够在同一网络下相互访问。

Adminer在DockerHub的镜像页面提供了关于主题与插件等环境变量的配置参考,通过 ADMINER_DESIGN 环境变量可以设定在GitHub源仓库designs目录中的主题。

如果要使用源仓库没有的自定义的主题,则可以使用volumes映射自定义的adminer.css文件。(但需要注意文件权限,这里我使用 user:"1000" 指定用户运行)

我尝试了 hydra(Niyko) 与 arcs-Adminer-Material-Theme 主题,前者则是基于后者制作,颜值加分。

chrome_xRx5qzY8Ot.png

chrome_HBLkd7rQ2s.png

以上的配置文件,根据自己的配置需求进行调整。在Portainer下Deploy之后(或者用docker-compose)稍等一会,数据库容器就会运行了,在浏览器地址栏输入NAS的IP:5480(映射的端口号)即可打开Adminer的登录界面。

管理MySQL/MariaDB数据库,只需输入root+数据库密码就可以登录,PostgreSQL则先改变数据库类型,再输入postgres+数据库密码即可登陆。


至此,使用Docker搭建数据库完毕,如有错误还请指正,以后我会分享关于Nextcloud等应用的搭建记录。 (话说搭建Nextcloud该使用MariaDB还是PostgreSQL呀……)

1
Creative Designer 🖌️ 创意设计师
登录后评论
评论 0
社区准则 博客 联系 反馈 状态
主题