docker私有仓库建立及国内immich安装
最近在使用docker
安装immich
相册备份时,本地服务器的拉取immich
的docker
镜像怎么也拉取不下来,无奈研究了一下,采用外网服务器建立私有仓库,修改本地服务器的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
查看镜像:
看到上图中四个红框就是immich的4个镜像。
外网服务器建立私有仓库
docker-registry
是官方提供的工具,可以用于构建私有的镜像仓库,运行以下命令进行安装:
docker run -d -p 5000:5000 --restart=always --name registry registry
改变immich
镜像tag,命令行太麻烦了,这里我使用1Panel面板来进行修改进行的tag,如下图:
将镜像标签修改为
公网IP:5000/镜像自定义名:latest
,4个镜像的标签都得修改,我的镜像自定义名分别是 immitch-server、immitch-ai、pgvecto-rs、redis
将修改的标签推送到私有仓库,使用 docker push 公网IP:5000/镜像自定义名:latest
命令将4个镜像进行推送,其中一个镜像推送如下:
将四个镜像全部推送完成后,用浏览器访问
http://公网IP:5000/v2/_catalog
,结果如下:
本地服务器拉取私有仓库immich镜像
以上步骤成功建立了一个私有仓库并且包含immich
镜像的全部内容,接下来在本地服务器进行安装。
在本地服务器安装时也需要immich
的配置文件,在本文的最开始已经获取,把外网服务器上的配置文件传到本地服务器上,这里不做展示。
获取到immich
的配置文件后,.env
文件不用动,对docker-compose.yml
文件进行修改,将每一个镜像的地址修改为私有仓库的地址,以下是我的docker-compose.ym
l文件:
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
看到这个画面就安装成功了!