---
title: 环境容器
categories:
  - CS
status: todo
abbrlink: 63667
---

# 常用compose

```yaml
version: '3.8'
services:
  caddy:
    image: caddy:latest
    container_name: caddy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /www/wwwroot/caddy/Caddyfile:/etc/caddy/Caddyfile
      - /www/wwwroot/caddy/data:/data
      - /www/wwwroot/caddy/config:/config
      - /www/wwwroot/caddy/html:/usr/share/caddy
    networks:
      - mozzie-net

  mysql:
    image: mysql:latest
    container_name: mysql
    restart: always
    environment:
      # 改自己的
      MYSQL_ROOT_PASSWORD: xxxxxxx
      TZ: Asia/Shanghai
    volumes:
      - /www/wwwroot/mysql:/var/lib/mysql
    ports:
      - "6033:3306"
    networks:
      - mozzie-net

  mongo:
    image: mongo:latest
    container_name: mongo
    restart: always
    environment:
      # 改自己的
      MONGO_INITDB_ROOT_USERNAME: xxxxxxx
      # 改自己的
      MONGO_INITDB_ROOT_PASSWORD: xxxxxxx
    ports:
      - "37017:27017"
    volumes:
      - /www/wwwroot/mongodb:/data/db
    networks:
      - mozzie-net

  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: always
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "10022:22"
      - "3000:3000"
    volumes:
      - /www/wwwroot/gitea/data:/data
    depends_on:
      - mysql
    networks:
      - mozzie-net

  drone-server:
    image: drone/drone:latest
    container_name: drone-server
    volumes:
      - /www/wwwroot/drone/:/data/docker/drone
    environment:
      DRONE_AGENTS_ENABLED: 'true'
      DRONE_GIT_ALWAYS_AUTH: 'true'
      DRONE_TLS_AUTOCERT: 'true'
      DRONE_GITEA_SERVER: 'https://git.maxshader.com'
      # 看gitea创建OAuth2应用后提供的ID
      DRONE_GITEA_CLIENT_ID: '6a476381-1618-450b-9492-26e43abbb5d0'
      # 看gitea创建OAuth2应用后提供的ID
      DRONE_GITEA_CLIENT_SECRET: 'gto_c4tu5jovdzvgk3sscjqsya7ecd63vxnwe6c5ysrnx3jobvxzknwq'
      # 随意 openssl rand -hex 16，和下面 drone-runner-docker 要求一一致
      DRONE_RPC_SECRET: '26cdbe261717013601989df793a3cc38'
      DRONE_SERVER_HOST: ci.maxshader.com
      DRONE_SERVER_PROTO: 'https'
      DRONE_USER_CREATE: 'username:mozzie,admin:true'
    ports:
      - "8081:80"
      - "8443:443"
    networks:
      - mozzie-net
    restart: always

  drone-runner-docker:
    image: drone/drone-runner-docker:latest
    container_name: drone-runner-docker
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      DRONE_RPC_PROTO: http
      DRONE_RPC_HOST: drone-server
      DRONE_RPC_SECRET: 26cdbe261717013601989df793a3cc38
      DRONE_RUNNER_CAPACITY: 2
      DRONE_RUNNER_NAME: drone-runner-docker
      DRONE_TLS_AUTOCERT: 'true'
    networks:
      - mozzie-net
    restart: always

  filebrowser:
    image: filebrowser/filebrowser
    container_name: filebrowser
    # 直接挂整个wwwroot目录是个人习惯
    volumes:
      - /www/wwwroot/:/srv
    restart: always
    networks:
      - mozzie-net

  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    ports:
      - "4533:4533"
    restart: unless-stopped
    volumes:
      - "/www/wwwroot/navidrome/data:/data"
      - "/www/wwwroot/navidrome/music:/music:ro"
    networks:
      - mozzie-net

  it-tools:
    image: corentinth/it-tools:latest
    container_name: it-tools
    ports:
      - "22312:80"
    restart: unless-stopped
    networks:
      - mozzie-net

networks:
  mozzie-net:
    name: mozzie-net
    driver: bridge

```

对应 caddy 配置，也就是上面挂载的 `Caddyfile`

```conf
maxshader.com {
    root * /usr/share/caddy/
    file_server
    encode gzip
}

www.maxshader.com {
    redir https://maxshader.com{uri}
}

git.maxshader.com {
    reverse_proxy gitea:3000
}

music.maxshader.com {
    reverse_proxy navidrome:4533
}

file.maxshader.com {
    reverse_proxy filebrowser
}

ci.maxshader.com {
    reverse_proxy drone-server
}

it.maxshader.com {
    reverse_proxy it-tools
}
```

# drone ci卡pending

[done-runner-exec 官方安装文档](https://docs.drone.io/runner/exec/installation/linux/)

```bash
# 1.拉不下来就手动下载，再传到服务器解压
curl -L https://github.com/drone-runners/drone-runner-exec/releases/latest/download/drone_runner_exec_linux_amd64.tar.gz | tar zx

# 2.解压 移动到 /usr/local/bin
tar -zxvf drone_runner_exec_linux_amd64.tar.gz
mv ./drone-runner-exec /usr/local/bin

# 3.添加/修改 配置
mkdir /etc/drone-runner-exec
vim /etc/drone-runner-exec/config
```

写入内容

```bash
# http协议
DRONE_RPC_PROTO=https
# drone web服务地址
DRONE_RPC_HOST=ci.maxshader.com
# drone 安装 rpc key，和上面一致
DRONE_RPC_SECRET=26cdbe261717013601989df793a3cc38
```

安装 drone-runner-exec, 注册系统 service

```bash
# 配置完成后，运行 drone-runner-exec 注册系统service
drone-runner-exec service install
drone-runner-exec service start
drone-runner-exec service stop

# 查看服务状态
systemctl status drone-runner-exec
# 取消开机自动启动
systemctl disable drone-runner-exec
```