文章

docker私有仓库建立及国内immich安装

最近在使用docker安装immich相册备份时,本地服务器的拉取immichdocker镜像怎么也拉取不下来,无奈研究了一下,采用外网服务器建立私有仓库,修改本地服务器的docker-compose文件,成功拉取immich镜像,过程比较艰辛,这里浅浅的记录一下。

外网服务器下载安装immich

lmmich是一个高性能的开源的自托管照片和视频备份方案,这里是它的开源地址,通过docker compose的方式来进行安装,写这篇文章时immich的版本为v1.98.2,首先通过以下命令获取相关文件:

mkdir ./immich-app
cd ./immich-app
wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

以上命令获取到immich的配置文件,这里我直接默认,执行以下命令进行安装:

docker compose up -d

注意:这里是在能访问外网的服务器上进行下载安装

安装完成后运行 docker images -a 查看镜像:

image-lvrw.png看到上图中四个红框就是immich的4个镜像。

外网服务器建立私有仓库

docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库,运行以下命令进行安装:

docker run -d -p 5000:5000 --restart=always --name registry registry

改变immich镜像tag,命令行太麻烦了,这里我使用1Panel面板来进行修改进行的tag,如下图:

image-hqnn.png将镜像标签修改为 公网IP:5000/镜像自定义名:latest ,4个镜像的标签都得修改,我的镜像自定义名分别是 immitch-server、immitch-ai、pgvecto-rs、redis

image-tzvh.png

将修改的标签推送到私有仓库,使用 docker push 公网IP:5000/镜像自定义名:latest 命令将4个镜像进行推送,其中一个镜像推送如下:

将四个镜像全部推送完成后,用浏览器访问http://公网IP:5000/v2/_catalog ,结果如下:

image-rnpt.png

本地服务器拉取私有仓库immich镜像

以上步骤成功建立了一个私有仓库并且包含immich镜像的全部内容,接下来在本地服务器进行安装。

在本地服务器安装时也需要immich的配置文件,在本文的最开始已经获取,把外网服务器上的配置文件传到本地服务器上,这里不做展示。

获取到immich的配置文件后,.env文件不用动,对docker-compose.yml文件进行修改,将每一个镜像的地址修改为私有仓库的地址,以下是我的docker-compose.yml文件:

version: '3.8'

#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#

name: immich

services:
  immich-server:
    container_name: immich_server
    image: 公网IP:5000/immich-server:latest
    command: ['start.sh', 'immich']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

  immich-microservices:
    container_name: immich_microservices
    image: 公网IP:5000/immich-server:latest
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
    #   file: hwaccel.transcoding.yml
    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    command: ['start.sh', 'microservices']
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    depends_on:
      - redis
      - database
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: 公网IP:5000/immich-ai:latest
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
    #   file: hwaccel.ml.yml
    #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always

  redis:
    container_name: immich_redis
    image: 公网IP:5000/redis:latest
    restart: always

  database:
    container_name: immich_postgres
    image: 公网IP:5000/pgvecto-rs:latest
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

volumes:
  pgdata:
  model-cache:

修改好后执行以下命令:

docker compose up -d

你就会发现immich能安装上了!这里的安装速度取决于你的外网服务器的带宽,我这里大概花了10分钟吧。

用浏览器访问 本地服务器IP:2283

看到这个画面就安装成功了!

License:  CC BY 4.0