Docker compose 推荐
目录索引
docker compose 相关实例推荐. 话不多说 直接给了.
个人使用
openlist
挂载网盘的
docker-compose.yml
services: openlist: image: 'openlistteam/openlist:latest' container_name: openlist network_mode: bridge user: '0:0' volumes: - './data:/opt/openlist/data' ports: - '5244:5244' environment: - UMASK=022 - TZ=Asia/Shanghai restart: alwaysemby
自建影视服务器喽,顺便加个代理刮削,使用host网络就不用改代理地址
docker-compose.yml
services: emby: image: emby/embyserver_arm64v8 # X86架构镜像: emby/embyserver container_name: emby restart: always network_mode: host ports: - 8096:8096 environment: - TZ=Asia/Shanghai - HTTP_PROXY=http://127.0.0.1:7890 - HTTPS_PROXY=http://127.0.0.1:7890 - ALL_PROXY=http://127.0.0.1:7890 volumes: - ./config:/config - <自定义路径>:/mediago-emby2openlist
重定向 emby 服务器中 strm 文件的 与
embyopenlist搭配使用 配置文件说明 https://github.com/AmbitiousJun/go-emby2openlist
docker-compose.yml
services: go-emby2openlist: build: context: . dockerfile: Dockerfile environment: - TZ=Asia/Shanghai - GIN_MODE=release container_name: go-emby2openlist network_mode: host restart: always volumes: - ./config.yml:/app/config.yml # - ./lib:/app/lib 不需要ffmpeg # - ./openlist-local-tree:/app/openlist-local-tree 不使用strm生成 ports: - 8095:8095 # httpmihomo
docker版本的小喵,需要先准备好
config.yaml配置文件 以下基本配置自用 需要自行加入节点
docker-compose.yml
services: mihomo: image: metacubex/mihomo:latest container_name: mihomo network_mode: host restart: always ports: - "7890:7890" - "9090:9090" volumes: - ./config.yaml:/root/.config/mihomo/config.yaml environment: MIHOMO_CONFIG_DIRECTORY: "/root/.config/mihomo"config.yaml
mixed-port: 7890allow-lan: truebind-address: '*'mode: rulelog-level: errordns: enable: true ipv6: false enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 use-hosts: true nameserver: - 8.8.8.8 - 1.1.1.1 fallback: - https://dns.cloudflare.com/dns-query - tls://8.8.8.8 - tls://1.1.1.1 fallback-filter: geoip: true geoip-code: CN ipcidr: - 240.0.0.0/4 fake-ip-filter: - '*.lan' - '*.local' - 'localhost' - 'ntp.org' - 'time.*' - 'connectivitycheck.gstatic.com' - 'detectportal.firefox.com' proxy-server-nameserver: - 8.8.8.8 - 1.1.1.1proxies: - <节点>proxy-groups: - <节点分组>rules: - <规则> - 'DOMAIN,injections.adguard.org,DIRECT' - 'DOMAIN,local.adguard.org,DIRECT' - 'DOMAIN-SUFFIX,local,DIRECT' - 'IP-CIDR,127.0.0.0/8,DIRECT' - 'IP-CIDR,172.16.0.0/12,DIRECT' - 'IP-CIDR,192.168.0.0/16,DIRECT' - 'IP-CIDR,10.0.0.0/8,DIRECT' - 'IP-CIDR,17.0.0.0/8,DIRECT' - 'IP-CIDR,100.64.0.0/10,DIRECT' - 'IP-CIDR,224.0.0.0/4,DIRECT' - 'IP-CIDR6,fe80::/10,DIRECT' - 'DOMAIN-SUFFIX,cn,DIRECT' - 'DOMAIN-KEYWORD,-cn,DIRECT' - 'GEOIP,CN,DIRECT' - 'MATCH,DIRECT'frp
玩穿透的
frps
docker-compose.yml
services: frps: image: kimi360/frpc:latest container_name: frps network_mode: host restart: always volumes: - ./frps.toml:/frp/frps.tomlfrps.toml
bindPort = 6900 # 自定义端口auth.token = "<自定义token>"transport.maxPoolCount = 1 # 连接池数frpc
docker-compose.yml
services: frpc: image: kimi360/frpc:latest container_name: frpc network_mode: host restart: always volumes: - ./frpc.toml:/frp/frpc.tomlfrpc.toml
serverAddr = "<服务器IP>"serverPort = 6900 # 与服务器frps端口一致auth.token = "<与服务器自定义token一致>"transport.poolCount = 1 # 连接数
# 以本地 emby 穿透到公网为例[[proxies]]name = "emby"type = "tcp"localIP = "127.0.0.1"localPort = 8096remotePort = 8096transport.useEncryption = truetransport.useCompression = true# 启用健康检查,类型为 tcphealthCheck.type = "tcp"# 建立连接超时时间为 3 秒healthCheck.timeoutSeconds = 3# 连续 3 次检查失败,此 proxy 会被摘除healthCheck.maxFailed = 3# 每隔 10 秒进行一次健康检查healthCheck.intervalSeconds = 10其他 Compose
ddns-go
动态解析域名
docker-compose.yml
services: ddns-go: image: 'jeessy/ddns-go:latest' container_name: ddns-go network_mode: host ports: - 9876:9876 volumes: - './ddns-go:/root' restart: alwayscaddy
caddy最大益处就是可解决你的SSL证书问题
docker-compose.yml
services: caddy: image: 'caddy:latest' container_name: caddy network_mode: host volumes: - ./Caddyfile:/etc/caddy/Caddyfile - ./data:/data cap_add: - NET_ADMIN restart: alwaysCaddyfile
# openlisthttps://inmark.dev { encode zstd gzip reverse_proxy 127.0.0.1:5244}navidrome
音乐服务器 如果你是ios推荐使用LMP音乐APP
docker-compose.yml
services: navidrome: image: deluan/navidrome:latest container_name: navidrome network_mode: bridge ports: - "4533:4533" volumes: - "./data:/data" - "<音乐所在路径>:/music" environment: - ND_DEFAULTLANGUAGE=zh-Hans - ND_ENABLETRANSCODINGCONFIG=true - ND_TRANSCODINGCACHESIZE=0 - ND_SCANSCHEDULE=1m - ND_LOGLEVEL=info - ND_SESSIONTIMEOUT=24h restart: alwayssolara
音乐在线服务,如与
navidrome一起使用推荐<音乐所在路径>与<本地存储路径>一致
docker-compose.yml
services: solara: image: leaosunday/solara:latest container_name: solara network_mode: bridge restart: always ports: - "3000:3000" volumes: - ./data:/app/data - <本地存储路径>:/app/downloads # 改成你想要下载到nas的目录 environment: - NODE_ENV=production - PORT=3000 - DB_PATH=/app/data/solara.db - NAS_DOWNLOAD_DIR=/app/downloadscloudflared
cloudflared tunnel 穿透服务
docker-compose.yml
services: cloudflared: image: cloudflare/cloudflared:latest container_name: cloudflared restart: always network_mode: bridge command: - tunnel - --no-autoupdate - run - --token - <token>enclosed
加密一次性信息文件分享,必须使用
https访问
docker-compose.yml
services: enclosed: image: corentinth/enclosed:latest container_name: enclosed network_mode: bridge ports: - 8787:8787 volumes: - ./data:/app/.data restart: alwayshomeassistant
智能家居服务 接入
homekit
docker-compose.yml
services: homeassistant: image: homeassistant/home-assistant:latest container_name: homeassistant network_mode: host volumes: - ./config:/config ports: - 8123:8123 environment: - TZ=Asia/Shanghai restart: alwaysmariadb
Maridb 比 MySQL 更好用的数据库
docker-compose.yml
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/mysqlhalo
一个带有后台且插件有点丰富的博客网站
docker-compose.yml
services: halo: image: registry.fit2cloud.com/halo/halo restart: on-failure:3 container_name: halo network_mode: bridge volumes: - ./halo2:/root/.halo2 ports: - "8090:8090" environment: # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数 - JVM_OPTS=-Xmx512m -Xms512m command: # 外部访问地址,请根据实际需要修改 - --halo.external-url=https://<domain>speedtest
内网测速
docker-compose.yml
services: speedtest: container_name: speedtest image: ghcr.io/librespeed/speedtest:latest restart: always network_mode: bridge environment: MODE: standalone #TITLE: "LibreSpeed" #TELEMETRY: "false" #ENABLE_ID_OBFUSCATION: "false" #REDACT_IP_ADDRESSES: "false" #PASSWORD: #EMAIL: #DISABLE_IPINFO: "false" #IPINFO_APIKEY: "your api key" #DISTANCE: "km" #WEBPORT: 8080 ports: - "8080:8080" # webport mapping (host:container)musictag
音乐内置信息补全服务
docker-compose.yml
services: musictag: image: xhongc/music_tag_web:latest container_name: musictag network_mode: bridge ports: - 8002:8002 volumes: - '/vol1/1000/Tmp/music:/app/media' - './data:/app/data' restart: alwaysmetatube
docker-compose.yml
services: metatube: image: ghcr.io/metatube-community/metatube-server:latest container_name: metatube network_mode: bridge ports: - 8989:8080 environment: # 代理地址 - proxy_host=http://192.168.0.254:7890 - http_proxy=http://192.168.0.254:7890 - https_proxy=http://192.168.0.254:7890 volumes: - ./config:/config restart: always command: -dsn /config/metatube.dbimmich
开源的照片管理工具,支持 iOS 和 Android App.
首先从 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=postgresDB_USERNAME=postgresDB_DATABASE_NAME=immichdocker-compose.yml
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: