1
0
Fork 0

😘修改为dind方式进行部署

This commit is contained in:
LiuShen 2025-07-12 17:15:03 +08:00
parent 36b6d9e9dc
commit 12f1cd5526
3 changed files with 47 additions and 31 deletions

View File

@ -1,16 +1,32 @@
version: "3.9" version: "3.9"
services: services:
dind:
image: docker:dind
container_name: forgejo-dind
privileged: true
restart: 'unless-stopped'
command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false']
environment:
DOCKER_TLS_CERTDIR: ""
networks:
- 1panel-network
forgejo_runner: forgejo_runner:
image: code.forgejo.org/forgejo/runner:7.0.0 image: code.forgejo.org/forgejo/runner:7.0.0
container_name: ${CONTAINER_NAME:-forgejo-runner} container_name: ${CONTAINER_NAME:-forgejo-runner}
depends_on:
dind:
condition: service_started
links:
- dind
restart: always restart: always
user: "1000:1000" # 非 root 用户运行容器 user: "1000:1000" # 非 root 用户运行容器
command: "/data/scripts/register.sh" command: "/data/scripts/register.sh"
volumes: volumes:
- ./data:/data - ./data:/data
- ./scripts/register.sh:/data/scripts/register.sh - ./scripts/register.sh:/data/scripts/register.sh:ro
- /var/run/docker.sock:/var/run/docker-forgejo-runner.sock # - /var/run/docker.sock:/var/run/docker-forgejo-runner.sock
environment: environment:
- DOCKER_HOST=tcp://dind:2375
- FORGEJO_INSTANCE_URL=${FORGEJO_INSTANCE_URL} - FORGEJO_INSTANCE_URL=${FORGEJO_INSTANCE_URL}
- RUNNER_REGISTRATION_TOKEN=${RUNNER_REGISTRATION_TOKEN} - RUNNER_REGISTRATION_TOKEN=${RUNNER_REGISTRATION_TOKEN}
- RUNNER_NAME=${RUNNER_NAME:-default-runner} - RUNNER_NAME=${RUNNER_NAME:-default-runner}

View File

@ -16,20 +16,20 @@ chmod g+s data/.cache
chmod +x ./scripts/register.sh chmod +x ./scripts/register.sh
# 创建自定义 docker context 指向 /var/run/docker-forgejo-runner.sock # # 创建自定义 docker context 指向 /var/run/docker-forgejo-runner.sock
SOCK_PATH="/var/run/docker-forgejo-runner.sock" # SOCK_PATH="/var/run/docker-forgejo-runner.sock"
CONTEXT_NAME="forgejo-runner-context" # CONTEXT_NAME="forgejo-runner-context"
# 如果 context 已存在,则先删除 # # 如果 context 已存在,则先删除
if docker context inspect "$CONTEXT_NAME" >/dev/null 2>&1; then # if docker context inspect "$CONTEXT_NAME" >/dev/null 2>&1; then
docker context rm -f "$CONTEXT_NAME" # docker context rm -f "$CONTEXT_NAME"
echo "已删除旧的 Docker context: $CONTEXT_NAME" # echo "已删除旧的 Docker context: $CONTEXT_NAME"
fi # fi
docker context create "$CONTEXT_NAME" \ # docker context create "$CONTEXT_NAME" \
--docker "host=unix://$SOCK_PATH" # --docker "host=unix://$SOCK_PATH"
echo "✅ 初始化完成:" echo "✅ 初始化完成:"
echo " - 已创建 ./data 并配置权限" echo " - 已创建 ./data 并配置权限"
echo " - 已创建 ./scripts/register.sh 并配置权限" echo " - 已创建 ./scripts/register.sh 并配置权限"
echo " - 已创建 Docker context: $CONTEXT_NAME -> $SOCK_PATH" # echo " - 已创建 Docker context: $CONTEXT_NAME -> $SOCK_PATH"

View File

@ -1,21 +1,21 @@
#!/bin/bash # #!/bin/bash
set -e # set -e
CONTEXT_NAME="forgejo-runner-context" # CONTEXT_NAME="forgejo-runner-context"
SOCK_PATH="/var/run/docker-forgejo-runner.sock" # SOCK_PATH="/var/run/docker-forgejo-runner.sock"
# 删除 Docker context # # 删除 Docker context
if docker context inspect "$CONTEXT_NAME" >/dev/null 2>&1; then # if docker context inspect "$CONTEXT_NAME" >/dev/null 2>&1; then
docker context rm -f "$CONTEXT_NAME" # docker context rm -f "$CONTEXT_NAME"
echo "🗑️ 已删除 Docker context: $CONTEXT_NAME" # echo "🗑️ 已删除 Docker context: $CONTEXT_NAME"
else # else
echo "⚠️ Docker context $CONTEXT_NAME 不存在,跳过删除。" # echo "⚠️ Docker context $CONTEXT_NAME 不存在,跳过删除。"
fi # fi
# 删除 socket 文件(如果存在) # # 删除 socket 文件(如果存在)
if [ -S "$SOCK_PATH" ]; then # if [ -S "$SOCK_PATH" ]; then
rm -f "$SOCK_PATH" # rm -f "$SOCK_PATH"
echo "🗑️ 已删除 socket 文件: $SOCK_PATH" # echo "🗑️ 已删除 socket 文件: $SOCK_PATH"
else # else
echo "⚠️ Socket 文件 $SOCK_PATH 不存在,跳过删除。" # echo "⚠️ Socket 文件 $SOCK_PATH 不存在,跳过删除。"
fi # fi