關(guān)于immich?docker-compose.yml配置文件詳解
前言
Immich是一個(gè)自托管的照片和視頻備份解決方案,允許用戶在私有服務(wù)器上存儲(chǔ)、管理和分享他們的媒體文件。
這個(gè)項(xiàng)目旨在提供一個(gè)類似于Google照片或iCloud照片庫(kù)的體驗(yàn),但是用戶可以完全控制自己的數(shù)據(jù)。通過(guò)自托管,用戶不需要依賴第三方云服務(wù)提供商來(lái)存儲(chǔ)私人照片和視頻,這增加了隱私保護(hù)和數(shù)據(jù)所有權(quán)。
Immich的主要特點(diǎn)包括:
- 自托管:所有數(shù)據(jù)都存儲(chǔ)在用戶自己的服務(wù)器上。
- 照片和視頻備份:提供自動(dòng)的媒體文件備份功能。
- 易于訪問(wèn):通過(guò)Web界面和移動(dòng)應(yīng)用,用戶可以輕松訪問(wèn)、管理和分享他們的媒體庫(kù)。
- 數(shù)據(jù)控制:用戶完全擁有和控制自己的數(shù)據(jù),而不是存儲(chǔ)在第三方的云服務(wù)中。
- 隱私保護(hù):由于是自托管解決方案,用戶的照片和視頻不會(huì)被未經(jīng)授權(quán)的第三方訪問(wèn)。
Immich通常通過(guò)Docker容器化部署,使得安裝和維護(hù)變得簡(jiǎn)單。項(xiàng)目在GitHub上開(kāi)源,社區(qū)驅(qū)動(dòng),不斷更新和改進(jìn)。
使用Immich,用戶需要具備一定的技術(shù)背景,特別是關(guān)于如何部署和維護(hù)自托管服務(wù)的知識(shí)。
但對(duì)于希望提高個(gè)人數(shù)據(jù)隱私和安全性的用戶來(lái)說(shuō),Immich提供了一個(gè)很好的解決方案。
docker-compose.yml 配置文件解釋
# 指定Docker Compose文件的版本為3.8
version: "3.8"
# 定義項(xiàng)目的名稱為immich
name: immich
# 定義多個(gè)服務(wù)
services:
# 定義一個(gè)服務(wù)名為immich-server
immich-server:
# 設(shè)置容器的名稱為immich_server
container_name: immich_server
# 從GitHub Container Registry拉取immich-server的鏡像,版本由IMMICH_VERSION環(huán)境變量指定,默認(rèn)為release
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# 容器啟動(dòng)后執(zhí)行的命令
command: [ "start.sh", "immich" ]
# 指定掛載的卷
volumes:
# 將宿主機(jī)的UPLOAD_LOCATION目錄掛載到容器的/usr/src/app/upload
- ${UPLOAD_LOCATION}:/usr/src/app/upload
# 將宿主機(jī)的/etc/localtime掛載到容器中,以只讀方式同步時(shí)間
- /etc/localtime:/etc/localtime:ro
# 指定環(huán)境變量文件
env_file:
# 使用當(dāng)前目錄下的.env文件
- .env
# 指定端口映射
ports:
# 將容器的3001端口映射到宿主機(jī)的2283端口
- 2283:3001
# 定義服務(wù)依賴
depends_on:
# immich-server依賴于redis和database服務(wù)
- redis
- database
# 設(shè)置容器的重啟策略為始終重啟
restart: always
# 定義另一個(gè)服務(wù)名為immich-microservices
immich-microservices:
# 設(shè)置容器的名稱為immich_microservices
container_name: immich_microservices
# 使用相同的鏡像和版本控制策略
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# 啟動(dòng)微服務(wù)的命令
command: [ "start.sh", "microservices" ]
# 同樣指定掛載的卷
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
# 使用相同的環(huán)境變量文件
env_file:
- .env
# 同樣依賴于redis和database服務(wù)
depends_on:
- redis
- database
# 也設(shè)置為始終重啟
restart: always
# 以下是定義volumes的部分,用于指定所需的Docker卷
volumes:
# 定義一個(gè)卷名為pgdata,用于持久化PostgreSQL數(shù)據(jù)庫(kù)數(shù)據(jù)
pgdata:
# 定義一個(gè)卷名為model-cache,用于緩存機(jī)器學(xué)習(xí)模型數(shù)據(jù)
model-cache:
這個(gè)docker-compose.yml文件為Immich應(yīng)用定義了一系列服務(wù),包括主應(yīng)用服務(wù)器、微服務(wù)、機(jī)器學(xué)習(xí)服務(wù)、Redis緩存和PostgreSQL數(shù)據(jù)庫(kù)服務(wù)。
通過(guò)這個(gè)配置文件,可以一次性啟動(dòng)Immich應(yīng)用的所有組成部分,實(shí)現(xiàn)服務(wù)之間的依賴管理和自動(dòng)重啟策略等功能。
環(huán)境變量 .env文件解釋
# 你可以在這個(gè)URL找到所有支持的環(huán)境變量的文檔:https://immich.app/docs/install/environment-variables # 上面這一行是注釋,說(shuō)明了如何找到關(guān)于所有支持的環(huán)境變量的官方文檔。 # 你上傳的文件將被存儲(chǔ)在這個(gè)位置 UPLOAD_LOCATION=./library # 設(shè)置`UPLOAD_LOCATION`環(huán)境變量,定義了上傳文件的存儲(chǔ)位置。這里設(shè)置為當(dāng)前目錄下的`library`文件夾。 # 使用的Immich版本。你可以將其固定在特定版本,比如 "v1.71.0" IMMICH_VERSION=release # 設(shè)置`IMMICH_VERSION`環(huán)境變量,指定Immich使用的版本。這里設(shè)置為`release`,意味著將使用最新的發(fā)布版本。 # 用于Postgres的連接密碼。你應(yīng)該將其更改為一個(gè)隨機(jī)密碼 DB_PASSWORD=postgres # 設(shè)置`DB_PASSWORD`環(huán)境變量,定義連接PostgreSQL數(shù)據(jù)庫(kù)的密碼。默認(rèn)設(shè)置為`postgres`,建議更改為更安全的密碼。 # 以下這行不需要更改 ################################################################################### # 上面這行是注釋,表示以下的環(huán)境變量通常不需要修改。 DB_HOSTNAME=immich_postgres # 設(shè)置`DB_HOSTNAME`環(huán)境變量,指定PostgreSQL數(shù)據(jù)庫(kù)服務(wù)的主機(jī)名。這里使用的是`docker-compose.yml`文件中定義的服務(wù)名稱`immich_postgres`。 DB_USERNAME=postgres # 設(shè)置`DB_USERNAME`環(huán)境變量,定義連接PostgreSQL數(shù)據(jù)庫(kù)的用戶名。默認(rèn)設(shè)置為`postgres`。 DB_DATABASE_NAME=immich # 設(shè)置`DB_DATABASE_NAME`環(huán)境變量,指定PostgreSQL數(shù)據(jù)庫(kù)的名稱。這里設(shè)置為`immich`。 REDIS_HOSTNAME=immich_redis # 設(shè)置`REDIS_HOSTNAME`環(huán)境變量,指定Redis服務(wù)的主機(jī)名。這里使用的是`docker-compose.yml`文件中定義的服務(wù)名稱`immich_redis`。
這個(gè).env文件提供了Immich服務(wù)和它所依賴的數(shù)據(jù)庫(kù)(PostgreSQL)以及Redis服務(wù)的基本配置。
通過(guò)這些環(huán)境變量,Immich服務(wù)能夠正確地連接到數(shù)據(jù)庫(kù)和Redis,同時(shí)指定了文件上傳的位置。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- docker常用容器啟動(dòng)docker-compose.yml配置文件使用
- 在docker-compose.yml文件中配置容器的環(huán)境變量方式
- docker-compose.yml參數(shù)的用法(配置文件)
- 使用docker?compose快速配置一組容器服務(wù)詳解
- Springboot使用docker-compose實(shí)現(xiàn)動(dòng)態(tài)配置過(guò)程
- docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn)
- 詳解Docker Compose配置文件參數(shù)
- Docker compose配置文件寫(xiě)法及命令使用示例
- docker-compose安裝yml文件配置方式
- docker compose 一鍵部署分布式配置中心Apollo的過(guò)程詳解
- docker-compose部署配置jenkins的詳細(xì)教程
- Docker Compose 配置指南小結(jié)
相關(guān)文章
使用Docker查看Elasticsearch錯(cuò)誤日志的詳細(xì)步驟
在使用 Elasticsearch(簡(jiǎn)稱 ES)的過(guò)程中,我們可能會(huì)遇到各種問(wèn)題,為了快速定位和解決這些問(wèn)題,查看錯(cuò)誤日志是關(guān)鍵,本文將介紹如何使用 Docker 查看 Elasticsearch 的錯(cuò)誤日志,并提供一些實(shí)用技巧,需要的朋友可以參考下2025-08-08
Mac為docker和kubectl添加自動(dòng)補(bǔ)全命令的方法
很多朋友不太明白如何為docker和kubectl添加自動(dòng)補(bǔ)全命令,本文通過(guò)一些示例給大家介紹kubectl基礎(chǔ)概念及語(yǔ)法知識(shí),需要的朋友參考下吧2021-06-06
docker部署mysql8之PXC8.0分布式集群過(guò)程
這篇文章主要介紹了docker部署mysql8之PXC8.0分布式集群過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
docker使用jdk21啟動(dòng)jar包報(bào)錯(cuò)的解決方案
這篇文章主要介紹了docker使用jdk21啟動(dòng)jar包報(bào)錯(cuò)的解決方案,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07
教你使用Portainer管理多臺(tái)Docker容器環(huán)境的方法
這篇文章主要介紹了Portainer管理多臺(tái)Docker容器環(huán)境,本文給大家介紹的非常詳細(xì),包括環(huán)境準(zhǔn)備及管理docker的詳細(xì)過(guò)程,需要的朋友可以參考下2021-11-11

