Docker compose 应用
🌈Docker 文件的应用,之前分开太过杂乱,现整合,并保持更新;
如果是 Linux 按个人习惯将会把
🧷docker-compose.yaml
放至🗂️/opt/<project_name>/
下
🧿Halo
🧷docker-compose.yaml
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.20.19
container_name: halo
depends_on:
mariadb:
condition: service_healthy
networks:
db:
restart: on-failure:3
ports:
- "8090:8090"
volumes:
- ./halo2:/root/.halo2
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
# 修改为自己已有的数据库配置,注意password=root密码
- --spring.r2dbc.url=r2dbc:pool:mariadb://mariadb:3306/halo
- --spring.r2dbc.username=root
- --spring.r2dbc.password=root
- --spring.sql.init.platform=mariadb
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
- --server.port=8090
mariadb:
image: mariadb:10.6
container_name: mariadb
networks:
db:
restart: always
environment:
MARIADB_ROOT_PASSWORD: "mariadb.root"
MARIADB_DATABASE: "halo"
TZ: "Asia/Shanghai"
ports:
- "3306:3306"
volumes:
- ./mariadb/data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
networks:
db:
driver: bridge
📦️Mariadb
Maridb 比 MySQL 更好用的数据库
🧷docker-compose.yaml
services:
mariadb:
image: mariadb:10.6
container_name: mariadb
restart: always
network_mode: bridge
environment:
MARIADB_ROOT_PASSWORD: "root"
MARIADB_DATABASE: "halo"
TZ: "Asia/Shanghai"
ports:
- "3306:3306"
volumes:
- ./data:/var/lib/mysql
- ./log:/var/log/mysql
🗃️OpenList
加上proxy_host 可以更好的挂载需要魔法的网盘
🧷docker-compose.yaml
services:
openlist:
image: 'openlistteam/openlist:latest'
container_name: openlist
network_mode: bridge
volumes:
- '/etc/openlist:/opt/openlist/data'
- '/vol00/Tech:/opt/openlist/Tech'
ports:
- '5244:5244'
environment:
- PUID=0
- PGID=0
- UMASK=022
- NO_PROXY=localhost,127.0.0.*
- proxy_host=http://192.168.0.200:7890
- http_proxy=http://192.168.0.200:7890
- https_proxy=http://192.168.0.200:7890
restart: always
🖇️Frpc
大多数nas只需要frpc,如果你需要frps只需要将以下“frpc”字样修改为"frps"即可
🧷docker-compose.yaml
services:
frpc:
image: kimi360/frpc:0.62.1
container_name: frpc
network_mode: host
restart: always
volumes:
- ./frpc.toml:/frp/frpc.toml
🧷frpc.toml
serverAddr = "服务器 IP"
serverPort = 服务器FRPS端口
auth.token = "约定的token"
[[proxies]]
name = "8090-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8090
remotePort = 8090
🧷frps.toml
bindPort = 自定义服务器FRPS端口
auth.token = "约定的token"
🗜️Caddy
相比nginx,不需要去折腾SSL证书了
🧷docker-compose.yaml
services:
caddy:
image: 'caddy:latest'
container_name: caddy
network_mode: host
volumes:
- './Caddyfile:/etc/caddy/Caddyfile'
cap_add:
- NET_ADMIN
restart: always
🧷Caddyfile
{
admin off
}
uain.fun:443 {
encode gzip
reverse_proxy 127.0.0.1:8090
}
🗄️Immich
Immich 是一个非常好用的开源的照片管理工具,支持 iOS 和 Android App. 由于
🗄️immich
依赖的服务比较多,使用官方推荐使用 Compose 的方式来安装。 首先从 immich 官网 下载配置文件:🧷docker-compose.yml,🧷example.env 也可以按照下面文件编写【与官方相同,删除英文注释,修改上传照片路径,数据库路径即可】
将
🧷example.env
与🧷docker-compose.yaml
放至相同路径文件夹下;将
🧷example.env
重命名为🧷.env
;docker compose up -d
等待完成即可。
🧷example.env
# 上传照片路径
UPLOAD_LOCATION=/home/immich/Photo
# 数据库路径
DB_DATA_LOCATION=/home/immich/db
# 时区 中国上海
TZ=Asia/Shanghai
# 版本
IMMICH_VERSION=release
# 数据库:用户密码数据库名
DB_PASSWORD=postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
🧷docker-compose.yaml
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- $PWD/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
healthcheck:
test: redis-cli ping || exit 1
restart: always
database:
container_name: immich_postgres
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
healthcheck:
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
interval: 5m
start_interval: 30s
start_period: 5m
command:
[
'postgres',
'-c',
'shared_preload_libraries=vectors.so',
'-c',
'search_path="$$user", public, vectors',
'-c',
'logging_collector=on',
'-c',
'max_wal_size=2GB',
'-c',
'shared_buffers=512MB',
'-c',
'wal_compression=on',
]
restart: always
volumes:
model-cache:
📽️Emby
开心版😀
🧷docker-compose.yaml
services:
emby:
container_name: emby
network_mode: bridge
volumes:
- ./config:/config
- ./Media:/Media
ports:
- 8096:8096
environment:
- NO_PROXY=localhost,127.0.0.*
- proxy_host=http://192.168.0.200:7890
- http_proxy=http://192.168.0.200:7890
- https_proxy=http://192.168.0.200:7890
devices:
- /dev/dri:/dev/dri
restart: always
image: amilys/embyserver:beta
emby 网易云搜刮插件
musictag
docker run -d -p 8001:8001 -v /path/to/your/music:/app/media -v /path/to/your/config:/app/data --restart=always xhongc/music_tag_web:latest
🐈⬛Mihomo
Docker版的小猫咪,使用mihomo内核
🧷docker-compose.yaml
services:
mihomo:
image: whomtobe/clash-tproxy:mihomo-latest
container_name: clash-tproxy
network_mode: host
restart: unless-stopped
volumes:
- ./mihomo_config:/config/mihomo
cap_add:
- NET_ADMIN
- SYS_ADMIN
security_opt:
- apparmor:unconfined
🧷config.yaml
以下为示例
mixed-port: 7890
allow-lan: true
bind-address: "*"
mode: rule
log-level: info
ipv6: false
dns:
enable: true
listen: 0.0.0.0:1053
default-nameserver:
- 223.5.5.5
- 8.8.8.8
nameserver:
- https://223.5.5.5/dns-query
- https://8.8.8.8/dns-query
proxies:
- name: 🇭🇰 香港节点
type: ss
server: your.server.com
port: 443
cipher: aes-128-gcm
password: your-password
proxy-groups:
- name: 代理模式
type: select
proxies:
- 🇭🇰 香港节点
- DIRECT
rules:
- DOMAIN-SUFFIX,google.com,代理模式
- DOMAIN-SUFFIX,youtube.com,代理模式
- GEOIP,CN,DIRECT
- MATCH,代理模式
🎵Navidrome
建议搭配 MusicTag 使用
🧷docker-compose.yaml
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
network_mode: bridge
ports:
- 4533:4533 #左侧端口如有冲突,可随意修改
volumes:
- "$PWD/data:/data"
- "/home/media/music:/music:ro"
environment:
#程序默认语言
- ND_DEFAULTLANGUAGE=zh-Hans
#启用GRAVATAR头像
- ND_ENABLEGRAVATAR=true
#关闭转码,如需要转码请设置为true
- ND_ENABLETRANSCODINGCONFIG=false
#SPOTIFY相关
# - ND_SPOTIFY_ID=
# - ND_SPOTIFY_SECRET=
#LAST.FM相关
# - ND_LASTFM_LANGUAGE=zh
# - ND_LASTFM_APIKEY=
# - ND_LASTFM_SECRET=
#PROXY相关
- HTTP_PROXY=http://192.168.0.168:7890
- HTTPS_PROXY=http://192.168.0.168:7890
restart: unless-stopped
🎶Music_tag_web
MusicTag
🧷docker-compose.yaml
services:
musictag:
image: xhongc/music_tag_web:latest
container_name: musictag
network_mode: bridge
ports:
- 8002:8002
volumes:
# 存放音乐的路径
- /vol1/1000/Media/音乐:/app/media
- ./data:/app/data
restart: always
🏠️HomeAssistant
智能家居管理,如果需要接入homekit,网络一定要选择host
🧷docker-compose.yaml
services:
homeassistant:
image: homeassistant/home-assistant:latest
container_name: homeassistant
network_mode: host
ports:
- 8123:8123
volumes:
- ./config:/config
environment:
- TZ=Asia/Shanghai
restart: always
⛓️DDNS-go
还得是ddns-go好用点
🧷docker-compose.yaml
services:
ddns-go:
image: 'jeessy/ddns-go:latest'
container_name: ddns-go
network_mode: host
ports:
- 9876:9876
volumes:
- './ddns-go:/root'
restart: always
📚️Reader
Docker 阅读,看小说的
🧷docker-compose.yaml
services:
reader:
image: hectorqin/reader
#image: hectorqin/reader:openj9-latest #docker镜像,arm64架构或小内存机器优先使用此镜像.启用需删除上一行
container_name: reader
network_mode: bridge
restart: always
ports:
- 7777:8080
volumes:
- $PWD/logs:/logs #log映射目录 /home/reader/logs 映射目录可自行修改
- $PWD/storage:/storage #数据映射目录 /home/reader/storage 映射目录可自行修改
environment:
- SPRING_PROFILES_ACTIVE=prod
- READER_APP_USERLIMIT=5 #用户上限,默认50
- READER_APP_USERBOOKLIMIT=200 #用户书籍上限,默认200
- READER_APP_CACHECHAPTERCONTENT=true #开启缓存章节内容 V2.0
# 下面都是多用户模式配置
- READER_APP_SECURE=true #开启登录鉴权,开启后将支持多用户模式
- READER_APP_SECUREKEY=adminpw #管理员密码 建议修改
- READER_APP_INVITECODE=0000 #注册邀请码 建议修改,如不需要可注释或删除