Docker compose 应用

    1564

🌈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 也可以按照下面文件编写【与官方相同,删除英文注释,修改上传照片路径,数据库路径即可】

  1. 🧷example.env🧷docker-compose.yaml 放至相同路径文件夹下;

  2. 🧷example.env 重命名为 🧷.env

  3. 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 网易云搜刮插件

https://github.com/xixka/Emby.Music-China-Provider

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 #注册邀请码 建议修改,如不需要可注释或删除

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息