【汇总:Docker Compose 配置文件】
本文最后更新于 125 天前,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

DockerCompose配置汇总

前言

利用 Docker compose可以使 Docker 布署变得简单而强大。简单讲只需创建并配置 docker-compose.yml 文件,执行 Docker compose 命令即可。本文将平时使用过的 docker-compose.yml 文件进行收集汇总,便于随时查询使用。

推荐一个在线测试 Docker 的网站,Play with Dockerhttps://labs.play-with-docker.com/

网站介绍:Play with Docker(PWD)由 Docker 股份有限公司赞助。PWD 是一个 Docker 游乐场,允许用户在几秒钟内运行 Docker 命令。它提供了在浏览器中拥有免费 Alpine Linux 虚拟机的体验,在这里您可以构建和运行 Docker 容器,甚至可以在 Docker Swarm 模式下创建集群。Docker 中的底层 Docker(DinD)用于提供多个 VM/PC 的效果。除了操场,PWD 还包括一个培训网站,该网站由一大套 Docker 实验室和从初学者到高级水平的测验组成,可在 training.play-with-Docker.com 上获得。

Docker Compose 配置及使用

创建 docker-compose.yml 文件

在项目目录下,创建 docker-compose.yml 文件。

vim docker-compose.yml
或者
nano docker-compose.yml

或直接通过 SSH 登录服务器,通过 SFTP 像操作 Windows 一样直接创建 docker-compose.yml 文件。

运行 docker-compose 相关命令

检查端口是否被占用

配置完 docker-compose.yml 文件后,最好先检查一下端口是否被占用。
查看端口是否被占用(以 81 为例),输入:

lsof -i:81  #查看 81 端口是否被占用,如果被占用,重新自定义一个端口

如果什么都没出现,表示端口未被占用,就可以继续下面的操作了。
如果出现:

-bash: lsof: command not found

运行:

apt install lsof  #安装 lsof

如果端口没有被占用(被占用了就修改一下端口,比如改成 82,注意 docker 命令行里和防火墙都要改)

最后一定在项目当前路径下,执行 Docker compose 命令。

docker-compose up -d

查询当前服务器 IP

可以直接在命令行输入:

curl ip.sb

这样就可以输入 http://ip:81 访问了。

更新镜像

docker-compose down  # 下线

docker-compose pull  # 拉取 latest 镜像

docker-compose up -d # 重新上线

卸载镜像

在项目当前路径下(以 /root/data/docker_data/npm 为例),执行:

cd /root/data/docker_data/npm
docker-compose down
cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive  # 卸载前先备份,以防万一
rm -rf /root/data/docker_data/npm  # 完全删除映射到本地的数据

删除不再使用的 docker 对象

docker image prune  # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

Nginx Proxy Manager

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'  # 冒号左边可以改成自己服务器未被占用的端口
      - '81:81'  # 冒号左边可以改成自己服务器未被占用的端口
      - '443:443' # 冒号左边可以改成自己服务器未被占用的端口
    volumes:
      - ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
      - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中

默认访问地址及管理员信息:

登录地址: http://ip:81
Email: [email protected]
Password: changeme

qBittorrent

version: "2"
services:
  qbittorrent:
    image: linuxserver/qbittorrent
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai # 你的时区
      - UMASK_SET=022
      - WEBUI_PORT=8081 # 将此处修改成你欲使用的 WEB 管理平台端口
    volumes:
      - ~/qBittorrent/config:/config # 绝对路径请修改为自己的 config 文件夹
      - ~/qBittorrent/downloads:/downloads # 绝对路径请修改为自己的 downloads 文件夹
    ports:
      # 要使用的映射下载端口与内部下载端口,可保持默认,安装完成后在管理页面仍然可以改成其他端口。
      - 6881:6881
      - 6881:6881/udp
      # 此处WEB UI 目标端口与内部端口务必保证相同
      - 8081:8081
    restart: unless-stopped

默认访问地址及管理员信息:

登录地址: http://ip:8081
User: admin
Password: adminadmin

Tiny Tiny RSS

version: "3"
services:
  service.rss:
    image: wangqiru/ttrss:latest
    container_name: ttrss
    ports:
      - 8002:80  # 改成自己的端口
    environment:
      - SELF_URL_PATH=https://rss.665188.xyz/ # 设置访问域名,注意最好提前设置好域名,注意域名地址是否带有 "/" 符号。
      - DB_PASS=ttrss # use the same password defined in `database.postgres`
      - PUID=1000
      - PGID=1000
    volumes:
      - feed-icons:/var/www/feed-icons/
    networks:
      - public_access
      - service_only
      - database_only
    stdin_open: true
    tty: true
    restart: always

  service.mercury: # set Mercury Parser API endpoint to `service.mercury:3000` on TTRSS plugin setting page
    image: wangqiru/mercury-parser-api:latest
    container_name: mercury
    networks:
      - public_access
      - service_only
    restart: always

  service.opencc: # set OpenCC API endpoint to `service.opencc:3000` on TTRSS plugin setting page
    image: wangqiru/opencc-api-server:latest
    container_name: opencc
    environment:
      - NODE_ENV=production
    networks:
      - service_only
    restart: always

  database.postgres:
    image: postgres:13-alpine
    container_name: postgres
    environment:
      - POSTGRES_PASSWORD=ttrss # feel free to change the password
    volumes:
      - ~/postgres/data/:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
    networks:
      - database_only
    restart: always

  # utility.watchtower
  #   container_name: watchtower
  #   image: containrrr/watchtower:latest
  #   volumes:
  #     - /var/run/docker.sock:/var/run/docker.sock
  #   environment:
  #     - WATCHTOWER_CLEANUP=true
  #     - WATCHTOWER_POLL_INTERVAL=86400
  #   restart: always

volumes:
  feed-icons:

networks:
  public_access: # Provide the access for ttrss UI
  service_only: # Provide the communication network between services only
    internal: true
  database_only: # Provide the communication between ttrss and database only
    internal: true

默认访问地址及管理员信息:

登录地址: http://ip:8002
User: admin
Password: password

Hexo + 后台管理 + 评论

Hexo 部署:

version: '3.3'
services:
    hexo:
        container_name: hexo
        environment:
            - HEXO_SERVER_PORT=4000   # 不建议改,如果这边的 4000 改了,下面 ports 部分,冒号右边的 4000 也需要修改
            - GIT_USER=github_name       # 改成自己的用户名,可以随便写一个 
            - [email protected]  # 改成自己的邮箱,可以随便写一个
            - TZ=Asia/Shanghai  # 时区
        volumes:
            - './blog:/app'    # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 blog 文件夹中
        ports:
            - '8080:4000'     # 冒号左边可以改成自己服务器未被占用的端口
        image: spurin/hexo

Hexo 后台地址:

登录地址: http://ip:8080/admin

Twikoo 评论部署:

version: "3.5"
services:
  twikoo:
    container_name: twikoo
    image: imaegoo/twikoo
    environment:
      - TWIKOO_THROTTLE=1000 # IP 请求限流,当同一 IP 短时间内请求次数超过阈值将对该 IP 返回错误,默认 250,可以自己修改
    ports:
      - 4000:8080   # 冒号左边可以改成自己服务器未被占用的端口
    volumes:
      - ./data:/app/data  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
    restart: unless-stopped

AList

version: '3.3'
services:
    alist:
        restart: always
        volumes:
            - '/etc/alist:/opt/alist/data'  # 冒号左边的地址可以自己修改
        ports:
            - '5244:5244'  # 冒号左边的端口可以自己修改
        container_name: alist
        image: 'xhofe/alist:latest'

默认访问地址及管理员信息:

登录地址: http://ip:5244
User: admin
Password: admin

Umami

version: '3'
services:
  umami:
    image: docker.umami.dev/umami-software/umami:postgresql-latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:umami@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: replace-me-with-a-random-string
    depends_on:
      - db
    restart: always
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: umami
    volumes:
      - ./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro
      - ./umami-db-data:/var/lib/postgresql/data
    restart: always

默认访问地址及管理员信息:

登录地址: http://ip:3000
User: admin
Password: umami

IT-Tools

version: '3.9'
services:
  ittools:
    image: 'ghcr.io/corentinth/it-tools:latest'
    container_name: it-tools
    restart: unless-stopped
    ports:
      - '30811:80'

Nextcloud All-in-One

version: "3.8"
volumes:
 nextcloud_aio_mastercontainer:
   name: nextcloud_aio_mastercontainer
services:
 nextcloud:
   image: nextcloud/all-in-one:latest
   restart: unless-stopped
   container_name: nextcloud-aio-mastercontainer
   volumes:
     - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
     - /var/run/docker.sock:/var/run/docker.sock:ro
   ports:
     - 8090:8080 # change the port on the left side if it's already in use on your host system.
   environment:
     - APACHE_PORT=11000  # change this port number if 11000 is already in use on your host system.
     - APACHE_DISABLE_REWRITE_IP=1
     - NEXTCLOUD_TRUSTED_DOMAINS=pan.gugu.ovh 31.22.109.18 # Your domain name + proxy host IP
     - TRUSTED_PROXIES=31.22.109.18 # proxy host IP

Koodo Reader

version: '3.5'
services:
  koodo:
    container_name: koodo
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "80:80/tcp"
    restart: unless-stopped

Piwigo

version: "3"
services:
  piwigo:
    image: linuxserver/piwigo
    network_mode: bridge
    ports:
      - 8899:80
    links:
      - db

  db:
    image: mysql:5
    network_mode: bridge
    environment:
      MYSQL_USER: "piwigo"
      MYSQL_PASSWORD: "piwigo"
      MYSQL_DATABASE: "piwigo"
      MYSQL_RANDOM_ROOT_PASSWORD: "true"

Hellohao

  • 工具介绍:Hellohao 图像托管程序(图床)这是一个由 JAVA 语言编写 SpringBoot 框架开发的开源图像托管程序。具备多对象存储源对接,采用前后端分离式设计的一款专门托管图像的程序,支持多种格式的图像 多功能的图床系统。该程序支持除了 web 端之外,同时支持客户端(win/mac),移动端(小程序)等常用全平台支持。程序主要使用领域:个人照片存储,团队共享图像,博客/商城等网站图片托管,图像批量云分享等。具备优秀的多用户图像上传功能和完善的图像查询管理逻辑,同时支持对接多家对象存储。
  • 存储源支持:
    • 开源版:本地,阿里OSS,又拍USS,七牛KODO,腾讯COS,网易NOS,FTP,AWS S3协议(百度云BOS,青云Qingstor,Ucloud US3,Minio等兼容S3协议)
    • Core 版:开源版的基础上增加 Backblaze(B2) 并且可同个对象存储商家可开多个存储源(可添加至90+存储源)
  • Github 地址:https://github.com/hello-hao/Tbed
  • 初始用户名:admin 初始邮箱:admin 初始密码:admin
version: "3"
services:
  tbed-free:
    # 具体版本号需要填写目前发行的最新版本
    image: hellohao/tbed-free:2023xxxx
    networks:
      hellohao_network:
    ports:
      - "10088:10088"
      - "10089:10089"
    volumes:
      - /HellohaoData/:/HellohaoData/
    environment:
      MYSQL_URL: jdbc:mysql://hellohaodb/tbed?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      # 数据库用户名(一般使用本镜像数据库无需修改,如果使用外部三方数据库自行修改自己的用户名)
      MYSQL_USERNAME: root
      # 自定设置一个MySQL的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致
      MYSQL_PASS: tIaNGg@SHa&hIo56
      # 前端域名(反代10089端口的域名)
      HELLOHAO_WEB_HOST: http://pic.example.com
      # 后端域名(反代10088端口的域名)
      HELLOHAO_SERVER_HOST: http://server.example.com
  hellohaodb:
    image: hellohao/mysql-free:1.0
    networks:
      hellohao_network:
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    ports:
      - "3307:3306"
    volumes:
      - /HellohaoData/mysql:/var/lib/mysql
    environment:
      # MySQL的密码
      MYSQL_ROOT_PASSWORD: tIaNGg@SHa&hIo56
networks:
  hellohao_network:

Immich

下载 docker-compose.ymlexample.env 文件到同一个目录下并编辑配置文件。

docker-compose.yml 文件

wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
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: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    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: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # 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: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # 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: redis:6.2-alpine@sha256:afb290a0a0d0b2bd7537b62ebff1eb84d045c757c1c31ca2ca48c79536c0de82
    restart: always

  database:
    container_name: immich_postgres
    image: tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee
    env_file:
      - .env
    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:

example.env 文件重命名为 .env 文件

wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=./library

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=postgres

# The values below this line do not need to be changed
###################################################################################
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

REDIS_HOSTNAME=immich_redis

持续更新中……

版权归属: E家之长
本文链接: https://www.5iehome.cc/archives/docker-compose-yml-summary.html
许可协议: 本文使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权
暂无评论

发送评论 编辑评论


上一篇
下一篇