本文最后更新于 2024-01-29,文章内容可能已经过时。

适用于 CodeSandBox 的 Docker Compose 配置

如果不需要使用 Cloudflared 进行隧道代理,请将 cloudflared 的部分删除。

另外,除了使用 Cloudflared 进行隧道代理,现在还有一种使用自己的域名的方法,详见仓库:k0baya/reserve-vercel

现在已经将 Cloudflared 的部分从各配置中删除,如有需要请自行添加:

version: '3.3'
services:
    cloudflared:
      restart: always
      network_mode: host
      environment:
          - TZ=Asia/Shanghai
      command: tunnel --edge-ip-version auto --protocol quic --heartbeat-interval 10s run --token [ARGO_TOKEN]
      container_name: cloudflared
      image: cloudflare/cloudflared:latest

Qinglong

映射 5700 端口

version: '2'
services:
    qinglong:
      image: whyour/qinglong:latest
      volumes:
        - /project/sandbox/ql/data:/ql/data
      ports:
       - "0.0.0.0:5700:5700"
      environment:
        QlBaseUrl: '/'
      restart: always

Alist

映射 5244 端口

如果需要使用 Aria2 实现离线下载,将第 14 行的 image 指定的镜像更改为 xhofe/alist-aria2:main 即可

version: '3.3'
services:
    alist:
        restart: always
        volumes:
            - '/project/sandbox/alist:/opt/alist/data'
        ports:
            - '5244:5244'
        environment:
            - PUID=0
            - PGID=0
            - UMASK=022
        container_name: alist
        image: 'xhofe/alist:latest'

Halo

映射 8090 端口

version: "3"
services:
  halo:
    image: halohub/halo:2.11
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - /project/sandbox/data/halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s      
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=12345678
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
  
  halodb:
    image: postgres:15.4
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - /project/sandbox/data/db:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=12345678
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

Microsoft_365_E5_RenewX

映射端口 1066

version: '3.5'
services:
  renewx:
    image: gladtbam/ms365_e5_renewx:latest
    container_name: renewx
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /project/sandbox/E5RenewX/Deploy:/renewx/Deploy
      - /project/sandbox/E5RenewX/Appdata:/renewx/appdata
    ports:
      - "1066:1066"
    restart: unless-stopped

需要新建 Config.xml 文件放在 Deploy 内,默认的 Config.xml 文件内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
    <!--站点服务器基本配置-->
    <Serivce>
        <!--服务访问端口-->
        <Port>1066</Port>
        <!--管理员密码(管理员登录路由/Admin/Login) 重要:首次启动前必须更改-->
        <LoginPassword>12345678</LoginPassword>
        <!--是否启用内核多线程支持-->
        <CoreMultiThread>true</CoreMultiThread>
        <!--网站备案(选填)-->
        <ICP>
            <!--备案显示文本-->
            <Text></Text>
            <!--备案管理查询机构跳转链接-->
            <Link>https://beian.miit.gov.cn</Link>
        </ICP>
        <!--Bootstrap CDN 若要更改请务必使用 [email protected] 版本(选填)-->
        <CDN>
            <!--Bootstrap CSS 文件 CDN bootstrap.min.css-->
            <CSS>https://cdn.staticfile.org/bootstrap/5.1.3/css/bootstrap.min.css</CSS>
            <!--Bootstrap JS 文件 CDN bootstrap.bundle.min.js-->
            <JS>https://cdn.staticfile.org/bootstrap/5.1.3/js/bootstrap.bundle.min.js</JS>
        </CDN>
    </Serivce>
    <!--站点 Kestrel 服务器 HTTPS 配置 (只支持 IIS 证书类型 即 PFX 格式的证书)-->
    <HTTPS>
        <!--Kestrel 是否启用 HTTPS(SSL 加密传输)-->
        <Enable>false</Enable>
        <!--SSL 证书文件名 (需要将 PFX 格式> 的 SSL 证书放置于该配置文件的同级目录 Deploy 文件夹下) 如 e5.sundayrx.net.pfx-->
> <!--不填则默认使用 Dev localhost 本地证书-->
> <Certificate></Certificate>
> <!--SSL 证书密钥(PFX 证书的访问密钥)-->
> <Password></Password>
> </HTTPS>
> <!--共享站点配置,不共享可无视以下内容 (若要共享站点 请自备以下所需的配置信息 且配置中 HTTPS 必须启用)-->
> <ShareSite>
> <!--是否启用站点共享-->
> <Enable>false</Enable>
> <!--SMTP 邮件发送支持-->
> <SMTP>
> <!--发件邮箱-->
> <Email></Email>
> <!--邮箱密钥-->
> <Password></Password>
> <!--SMTP 服务器地址-->
> <Host></Host>
> <!--SMTP 服务器端口-->
> <Port>587</Port>
> <!--SMTP 服务器是否使用 SSL 传输-->
> <EnableSSL>true</EnableSSL>
> </SMTP>
> <!--第三方 OAuth 登录支持(至少启用以下一种 OAuth 否则其他用户无法注册)-->
> <OAuth>
> <!--微软登录授权-->
> <Microsoft>
> <!--是否启用该 OAuth-->
> <Enable>true</Enable>
> <!--应用程序 Id-->
> <ClientId></ClientId>
> <!--应用程序访问机密-->
> <ClientSecret></ClientSecret>
> </Microsoft>
> <!--GitHub 登录授权-->
> <Github>
> <!--是否启用该 OAuth-->
> <Enable>true</Enable>
> <!--应用程序 Id-->
> <ClientId></ClientId>
> <!--应用程序访问机密-->
> <ClientSecret></ClientSecret>
> </Github>
> </OAuth>
> <!--站点系统设置-->
> <System>
> <!--站点启动后默认是否允许用户注册 建议为 false-->
> <AllowRegister>false</AllowRegister>
> <!--站点启动后默认公告(换行符请使用 
 进行换行)-->
> <Notice></Notice>
> <!--站点运营者-->
> <Master></Master>
> <!--站点运营者推广链接-->
> <MasterLink></MasterLink>
> <!--站点新用户默认配额数-->
> <DefaultQuota>1</DefaultQuota>
> <!--站点自动特赦时间间隔 (单位:天 至少30天)-->
> <AutoSpecialPardonInterval>30</AutoSpecialPardonInterval>
> </System>
> </ShareSite>
> </Configuration>
> ```
> XML

## [Pandora-Next](https://github.com/pandora-next/deploy)

> 映射端口 8181

```yaml
version: '3.3'
services:
    pandora-next:
        image: pengzhile/pandora-next
        container_name: PandoraNext
        network_mode: bridge
        restart: always
        ports:
            - "8181:8181"
        volumes:
            - /project/sandbox/pandora-next/data:/data
            - /project/sandbox/pandora-next/sessions:/root/.cache/PandoraNext

Uptime-Kuma

映射端口 3001

version: '3.8'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    volumes:
      - /project/sandbox/uptimekuma:/app/data
    ports:
      - "3001:3001"  # <Host Port>:<Container Port>
    restart: always

KodBox

映射端口 8080

version: '3.5'
services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - "/project/sandbox/db:/var/lib/mysql"   
    environment:
      - "TZ=Asia/Shanghai"
      - "MYSQL_ROOT_PASSWORD=jiehdo!25165n"
      - "MYSQL_DATABASE=kodbox"
      - "MYSQL_USER=bodbox"
      - "MYSQL_PASSWORD=jiehdo!25165n"
    restart: always
  
  app:
    image: kodcloud/kodbox
    ports:
      - 8080:80                
    links:
      - db
      - redis
    volumes:
      - "/project/sandbox/site:/var/www/html"  
    restart: always

  redis:
    image: redis:alpine
    environment:
      - "TZ=Asia/Shanghai"
    restart: always

如果照搬上面的设置,初始化时数据库和 Redis 的设置应该如图填写

Zfile

映射端口 8080

version: '3.3'
services:
    zfile:
        container_name: zfile
        restart: always
        ports:
            - '8080:8080'
        volumes:
            - '/project/sandbox/zfile/db:/root/.zfile-v4/db'
            - '/project/sandbox/zfile/logs:/root/.zfile-v4/logs'
            - '/project/sandbox/zfile/file:/data/file'
        image: zhaojun1998/zfile

PanIndex

映射端口 5238

version: '3.3'
services:
    panindex:
        container_name: panindex
        restart: always
        ports:
            - '5238:5238'
        volumes:
            - '/project/sandbox/PanIndex/data:/app/data'
        environment:
            - "PORT=5238"
        image: iicm/pan-index:latest

ShareList

映射端口 33001

version: '3.3'
services:
    sharelist:
        container_name: sharelist
        restart: always
        ports:
            - '33001:33001'
        volumes:
            - '/project/sandbox/sharelist:/sharelist/cache'
        image: reruin/sharelist:next

Cloudreve

映射端口 5212

进入容器需要先手动创建几个文件,在 Terminal 中输入以下指令即可:

mkdir -p cloudreve && cd cloudreve \
&& mkdir -vp cloudreve```bash
/cloudreve/uploads
&& touch cloudreve/conf.ini \
&& touch cloudreve/cloudreve.db \
&& mkdir -p aria2/config \
&& mkdir -p data/aria2 \
&& chmod -R 777 data/aria2
version: "3.8"
services:
  cloudreve:
    container_name: cloudreve
    image: cloudreve/cloudreve:latest
    restart: unless-stopped
    ports:
      - "5212:5212"
    volumes:
      - /project/sandbox/cloudreve/data:/data
      - /project/sandbox/cloudreve/cloudreve/uploads:/cloudreve/uploads
      - /project/sandbox/cloudreve/cloudreve/conf.ini:/cloudreve/conf.ini
      - /project/sandbox/cloudreve/cloudreve/cloudreve.db:/cloudreve/cloudreve.db
      - /project/sandbox/cloudreve/cloudreve/avatar:/cloudreve/avatar
    depends_on:
      - aria2
  aria2:
    container_name: aria2
    image: p3terx/aria2-pro
    restart: unless-stopped
    environment:
      - RPC_SECRET=jif1568dw87
      - RPC_PORT=6800
    volumes:
      - /project/sandbox/cloudreve/aria2/config:/config
      - /project/sandbox/cloudreve/data:/data

Aria2 的 token 默认为 jif1568dw87,如有需要自行修改。 初始账号和密码,请在 Terminal 中输入命令 docker logs cloudreve 后在日志中查找。

Typecho

映射端口 8080

version: '3.7'
services:
  typecho:
    image: joyqi/typecho:nightly-php7.4-apache
    container_name: typecho-server
    restart: always
    environment:
      - TIMEZONE=Asia/Shanghai
    ports:
      - 8080:80
    volumes:
      - /project/sandbox/typecho:/app/usr
    depends_on:
      - mariadb

  mariadb:
    image: mariadb
    container_name: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - "/project/sandbox/db:/var/lib/mysql"   
    environment:
      - "TZ=Asia/Shanghai"
      - "MYSQL_ROOT_PASSWORD=jiehdo!25165n"
      - "MYSQL_DATABASE=typecho"
      - "MYSQL_USER=typecho"
      - "MYSQL_PASSWORD=jiehdo!25165n"
    restart: always

如果照搬此 docker-compose.yaml,初始设置数据库时应该如此填写:

06B1D89D-4798-4A5B-AF9E-1BDA3967D42F.png

Baota_Panel

端口 8888 为面板,2022 为 SSH 端口,2021 为 FTP 端口,2080 和 2443 为网页服务预留端口,2888 是官方给的,不知道作用。

version: '3'
services:
  baota:
    image: gettionhub/baota-docker:ltd
    container_name: baota
    volumes:
      - /project/sandbox/www/website_data:/www/wwwroot 
      - /project/sandbox/www/mysql_data:/www/server/data
      - /project/sandbox/www/vhost:/www/server/panel/vhost 
    ports:
      - "8888:8888"
      - "2022:22"
      - "2021:21"
      - "2443:2443"
      - "2080:2080"
      - "2888:2888"
    restart: always

面板入口为8888端口的那个网址后面加上 /baota,形同 https://t6a4m-8888.csb.app/baota

初始用户名、密码都为baota

容器内root用户的ssh密码也是baota

WordPress

映射端口8080

version: '3.1'
services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - /project/sandbox/wordpree/app:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - /project/sandbox/wordpree/db:/var/lib/mysql

YAML

Copy

Memos

映射端口5230

version: "3.0"
services:
  memos:
    image: neosmemo/memos:latest
    container_name: memos
    volumes:
      - /project/sandbox/memos/:/var/opt/memos
    ports:
      - 5230:5230

YAML

Copy

Ghost

映射端口8080

首次启动会反复重启几次等待数据库创建文件,是正常的。

version: '3.1'
services:
  ghost:
    image: ghost:4-alpine
    restart: always
    ports:
      - 8080:2368
    environment:
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: example
      database__connection__database: ghost
      url: http://localhost:8080
    volumes:
      - /project/sandbox/ghost/app:/var/lib/ghost/content

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - /project/sandbox/ghost/db:/var/lib/mysql

YAML

Copy

NGINX-ui

面板端口为8080。网页服务端口预留为8443。

version: '3.3'
services:
    nginx-ui:
        stdin_open: true
        tty: true
        container_name: nginx-ui
        restart: always
        environment:
            - TZ=Asia/Shanghai
        volumes:
            - '/project/sandbox/appdata/nginx:/etc/nginx'
            - '/project/sandbox/appdata/nginx-ui:/etc/nginx-ui'
            - '/project/sandbox/www:/var/www'
        ports:
            - 8080:80
            - 8443:443
        image: 'uozi/nginx-ui:latest'

以上是一系列在 CodeSandBox 上配合 Cloudflared 使用的 Docker Compose 配置。每个配置中都包含了服务的端口映射、容器名称、镜像来源等信息。如果不需要 Cloudflared 打隧道,可以将每个配置文件中的 Cloudflared 部分删除。

请根据实际需求选择相应的配置,并确保正确配置相关环境变量和文件路径。希望对你有帮助!如果有其他问题,欢迎提出。

原帖地址:https://blog.saika.free.hr/archives/some_docker-compose_for_codesandbox