Add the runnable Gitea, PostgreSQL, and Hop control-plane foundation

Hop-State: A_06FN3QYA1N56NQYGZ81DWGR
Hop-Proposal: R_06FN3QXJRYPPEQZQA6S69QG
Hop-Task: T_06FN3MVGY3MT82ESQ89BND0
Hop-Attempt: AT_06FN3MVGY092BFA5MR9C7EG
This commit is contained in:
Hop
2026-07-11 08:50:48 -07:00
parent dd2c0abfd2
commit d9544b435b
22 changed files with 1114 additions and 0 deletions
+76
View File
@@ -0,0 +1,76 @@
name: hopweb
services:
postgres:
image: postgres:17.6-alpine
environment:
POSTGRES_DB: gitea
POSTGRES_USER: hopweb
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?copy .env.example to .env first}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U hopweb -d gitea"]
interval: 3s
timeout: 3s
retries: 20
volumes:
- postgres-data:/var/lib/postgresql/data
- ./deploy/postgres/init:/docker-entrypoint-initdb.d:ro
networks: [hopweb]
gitea:
image: docker.gitea.com/gitea:1.26.4
depends_on:
postgres:
condition: service_healthy
environment:
USER_UID: "1000"
USER_GID: "1000"
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: postgres:5432
GITEA__database__NAME: gitea
GITEA__database__USER: hopweb
GITEA__database__PASSWD: ${POSTGRES_PASSWORD}
GITEA__server__DOMAIN: localhost
GITEA__server__ROOT_URL: http://localhost:3000/
GITEA__server__SSH_DOMAIN: localhost
GITEA__server__SSH_PORT: "2222"
GITEA__service__DISABLE_REGISTRATION: "false"
GITEA__security__INSTALL_LOCK: "true"
GITEA__webhook__ALLOWED_HOST_LIST: control-plane
ports:
- "3000:3000"
- "2222:22"
volumes:
- gitea-data:/data
networks: [hopweb]
control-plane:
build:
context: ./services/control-plane
depends_on:
postgres:
condition: service_healthy
gitea:
condition: service_started
environment:
HOP_HTTP_ADDR: :8080
HOP_DATABASE_URL: postgres://hopweb:${POSTGRES_PASSWORD}@postgres:5432/hop?sslmode=disable
HOP_ADMIN_TOKEN: ${HOP_ADMIN_TOKEN:?set HOP_ADMIN_TOKEN in .env}
HOP_GITEA_WEBHOOK_SECRET: ${HOP_GITEA_WEBHOOK_SECRET:?set HOP_GITEA_WEBHOOK_SECRET in .env}
GITEA_BASE_URL: http://gitea:3000
GITEA_API_TOKEN: ${GITEA_API_TOKEN:-}
ports:
- "8080:8080"
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8080/readyz"]
interval: 5s
timeout: 3s
retries: 20
networks: [hopweb]
networks:
hopweb:
volumes:
gitea-data:
postgres-data: