连接外部数据库

连接外部PostgreSQL数据库的方法

如果您在使用过程中,遇到容器内的PostgreSQL数据库无法正常运行;

那么可以单独安装PostgreSQL,然后通过添加环境变量来连接外部数据库;

一、安装PostgreSQL数据库

提示:仅支持PostgreSQL数据库,不支持其他的数据库_

1.1. 下载镜像;

docker pull mtphotos/mt-photos-pg:latest

提示:当无法访问DockerHub时,请使用以下命令拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-pg:latest
docker tag registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-pg:latest mtphotos/mt-photos-pg:latest

第1条命令为拉取镜像

第2条命令为将镜像标记为Docker hub源,这样可以在图形化创建容器时使用

另外还可以用arm-latest标签的镜像,比如:docker pull mtphotos/mt-photos-pg:arm-latest

  • arm-latest为ARM架构版本的最新镜像;

提示:由于人脸识别和以文搜图功能需要保存向量数据,因此需要数据库支持保存vector数据

如果不需要使用人脸识别和以文搜图功能,可以选择PostgreSQL的官方镜像

docker pull postgres:14

1.2. 创建用于存放数据库数据的目录;

由于docker容器在更新、重新创建后,内部的文件都会被重置;
所以需要映射宿主机的目录来用于持久化存储;

1.3. 新建并启动容器;

docker run -d \
	--name mtphotos_pg \
	-e POSTGRES_PASSWORD=myDbPassword  \
	-e PGDATA=/var/lib/postgresql/data/pgdata \
	-v /custom/mount:/var/lib/postgresql/data \
	-p 5432:5432 \
	mtphotos/mt-photos-pg:latest

说明

  • /custom/mount为上一步创建的目录(即宿主机中的目录)
  • myDbPassword 为数据库密码,请记得修改

二、创建容器时增加环境变量

创建容器时,添加以下环境变量:

PostgreSQL相关的环境变量:

POSTGRES_HOST=192.168.1.108
POSTGRES_PORT=5432
POSTGRES_DATABASE=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=myDbPassword

192.168.1.108、myDbPassword 仅为举例,请记得替换

新建并启动容器:

docker run -d \
  --name="mt-photos" \
  -v /appdata/mt_photos/config:/config \
  -v /appdata/mt_photos/upload:/upload \
  -v /photos/folder1:/folder1 \
  -v /photos/folder2:/folder2 \
  -p 8063:8063 \
  -e TZ="Asia/Shanghai" \
  -e POSTGRES_HOST="192.168.1.108" \
  -e POSTGRES_PORT="5432" \
  -e POSTGRES_DATABASE="postgres" \
  -e POSTGRES_USER="postgres" \
  -e POSTGRES_PASSWORD="myDbPassword" \
  --restart="unless-stopped" \
  mtphotos/mt-photos:latest

使用docker-compose实现容器相互访问

使用depends_on,mtphotos容器内可以使用mtphotos_db访问数据库;

docker-compose.yaml 模板文件:

version: "3"

services:
  mtphotos:
    image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos:latest
    container_name: mtphotos
    restart: always
    ports:
      - 8063:8063
    volumes:
      - /volume1/docker/mt_photos/config:/config
      - /volume1/photos/mt_photos_upload:/upload
      - /volume1/xxx/其他需要映射的目录:/photos
    environment:
      - TZ=Asia/Shanghai
      - LANG=C.UTF-8
      - PUID=1000
      - PGID=100
      - POSTGRES_HOST=mtphotos_db
      - POSTGRES_PASSWORD=my_db_pwd
    depends_on:
      - mtphotos_db
  mtphotos_db:
    image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-pg:latest
    container_name: mtphotos_pg
    restart: always
    ports:
      - 5432:5432
    volumes:
      - /volume1/docker/MTphotos_db:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=my_db_pwd
      - PGDATA=/var/lib/postgresql/data/pgdata

my_db_pwd 为数据库密码,可以修改

yaml语法三大规则

规则一:缩进

yaml使用一个固定的缩进风格表示数据层结构关系,需要每个缩进级别由两个空格组成。一定不能使用tab键

规则二:冒号
services:
image: mtphotos/mt-photos:latest

每个冒号后面一定要有一个空格(以冒号结尾不需要空格)

规则三:短横线

想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分

environment:
  - TZ=Asia/Shanghai
  - LANG=C.UTF-8
  - PUID=1000
  - PGID=100

环境变量的用法介绍

Copyright © 2023 杭州相册家科技有限公司 All Rights Reserved

浙公网安备 33019202000625号浙ICP备2022014580号