From 6efbfa6dd43d02d34f3f55944722c7697fa20b0c Mon Sep 17 00:00:00 2001 From: Arunavo Ray Date: Mon, 19 May 2025 09:51:36 +0530 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Update=20Redis=20configuration=20an?= =?UTF-8?q?d=20Docker=20setup;=20improve=20README=20and=20code=20structure?= =?UTF-8?q?=20for=20clarity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- docker-compose.dev.yml | 3 ++- docker-compose.yml | 7 ++--- src/components/config/ConfigTabs.tsx | 39 ++++++++++++++-------------- src/lib/redis.ts | 8 ++++-- 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index e1a5e80..e69b1fb 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,7 @@ docker run -d --name gitea-mirror-redis redis:alpine docker pull ghcr.io/arunavo4/gitea-mirror:latest # Run the application with a link to the Redis container +# Note: The REDIS_URL environment variable is required and must point to the Redis container docker run -d -p 4321:4321 --link gitea-mirror-redis:redis \ -e REDIS_URL=redis://redis:6379 \ ghcr.io/arunavo4/gitea-mirror:latest @@ -158,7 +159,7 @@ The Docker container can be configured with the following environment variables: - `HOST`: Host to bind to (default: `0.0.0.0`) - `PORT`: Port to listen on (default: `4321`) - `JWT_SECRET`: Secret key for JWT token generation (important for security) -- `REDIS_URL`: URL for Redis connection (required, default: none) +- `REDIS_URL`: URL for Redis connection (required, default: none). When using Docker Compose, this should be set to `redis://redis:6379` to connect to the Redis container. #### Manual Installation diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index ba6c105..132b27e 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -54,7 +54,7 @@ services: - redis environment: - NODE_ENV=development - - DATABASE_URL=sqlite://data/gitea-mirror.db + - DATABASE_URL=file:data/gitea-mirror.db - HOST=0.0.0.0 - PORT=4321 - JWT_SECRET=dev-secret-key @@ -75,6 +75,7 @@ services: - GITEA_ORGANIZATION=${GITEA_ORGANIZATION:-github-mirrors} - GITEA_ORG_VISIBILITY=${GITEA_ORG_VISIBILITY:-public} - DELAY=${DELAY:-3600} + - REDIS_URL=redis://redis:6379 healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:4321/"] interval: 30s diff --git a/docker-compose.yml b/docker-compose.yml index 467c5bc..76064fe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: # Production service with real data gitea-mirror: - image: ${DOCKER_REGISTRY:-ghcr.io}/${DOCKER_IMAGE:-gitea-mirror}:${DOCKER_TAG:-latest} + image: ${DOCKER_REGISTRY:-ghcr.io}/${DOCKER_IMAGE:-arunavo4/gitea-mirror}:${DOCKER_TAG:-latest} build: context: . dockerfile: Dockerfile @@ -12,7 +12,7 @@ services: - linux/amd64 - linux/arm64 cache_from: - - ${DOCKER_REGISTRY:-ghcr.io}/${DOCKER_IMAGE:-gitea-mirror}:${DOCKER_TAG:-latest} + - ${DOCKER_REGISTRY:-ghcr.io}/${DOCKER_IMAGE:-arunavo4/gitea-mirror}:${DOCKER_TAG:-latest} container_name: gitea-mirror restart: unless-stopped ports: @@ -23,7 +23,7 @@ services: - redis environment: - NODE_ENV=production - - DATABASE_URL=sqlite://data/gitea-mirror.db + - DATABASE_URL=file:data/gitea-mirror.db - HOST=0.0.0.0 - PORT=4321 - JWT_SECRET=${JWT_SECRET:-your-secret-key-change-this-in-production} @@ -44,6 +44,7 @@ services: - GITEA_ORGANIZATION=${GITEA_ORGANIZATION:-github-mirrors} - GITEA_ORG_VISIBILITY=${GITEA_ORG_VISIBILITY:-public} - DELAY=${DELAY:-3600} + - REDIS_URL=redis://redis:6379 healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=3", "--spider", "http://localhost:4321/"] interval: 30s diff --git a/src/components/config/ConfigTabs.tsx b/src/components/config/ConfigTabs.tsx index 931e70f..6675238 100644 --- a/src/components/config/ConfigTabs.tsx +++ b/src/components/config/ConfigTabs.tsx @@ -224,26 +224,25 @@ export function ConfigTabs() { useEffect(() => { const generateDockerCode = () => { - return `version: "3.3" -services: - gitea-mirror: - image: arunavo4/gitea-mirror:latest - restart: unless-stopped - container_name: gitea-mirror - environment: - - GITHUB_USERNAME=${config.githubConfig.username} - - GITEA_URL=${config.giteaConfig.url} - - GITEA_TOKEN=${config.giteaConfig.token} - - GITHUB_TOKEN=${config.githubConfig.token} - - SKIP_FORKS=${config.githubConfig.skipForks} - - PRIVATE_REPOSITORIES=${config.githubConfig.privateRepositories} - - MIRROR_ISSUES=${config.githubConfig.mirrorIssues} - - MIRROR_STARRED=${config.githubConfig.mirrorStarred} - - PRESERVE_ORG_STRUCTURE=${config.githubConfig.preserveOrgStructure} - - SKIP_STARRED_ISSUES=${config.githubConfig.skipStarredIssues} - - GITEA_ORGANIZATION=${config.giteaConfig.organization} - - GITEA_ORG_VISIBILITY=${config.giteaConfig.visibility} - - DELAY=${config.scheduleConfig.interval}`; + return `services: + gitea-mirror: + image: arunavo4/gitea-mirror:latest + restart: unless-stopped + container_name: gitea-mirror + environment: + - GITHUB_USERNAME=${config.githubConfig.username} + - GITEA_URL=${config.giteaConfig.url} + - GITEA_TOKEN=${config.giteaConfig.token} + - GITHUB_TOKEN=${config.githubConfig.token} + - SKIP_FORKS=${config.githubConfig.skipForks} + - PRIVATE_REPOSITORIES=${config.githubConfig.privateRepositories} + - MIRROR_ISSUES=${config.githubConfig.mirrorIssues} + - MIRROR_STARRED=${config.githubConfig.mirrorStarred} + - PRESERVE_ORG_STRUCTURE=${config.githubConfig.preserveOrgStructure} + - SKIP_STARRED_ISSUES=${config.githubConfig.skipStarredIssues} + - GITEA_ORGANIZATION=${config.giteaConfig.organization} + - GITEA_ORG_VISIBILITY=${config.giteaConfig.visibility} + - DELAY=${config.scheduleConfig.interval}`; }; const code = generateDockerCode(); diff --git a/src/lib/redis.ts b/src/lib/redis.ts index d46e501..518d900 100644 --- a/src/lib/redis.ts +++ b/src/lib/redis.ts @@ -1,4 +1,8 @@ import Redis from "ioredis"; -export const redisPublisher = new Redis(); // For publishing -export const redisSubscriber = new Redis(); // For subscribing +// Connect to Redis using REDIS_URL environment variable or default to redis://redis:6379 +const redisUrl = process.env.REDIS_URL ?? 'redis://redis:6379'; + +export const redis = new Redis(redisUrl); +export const redisPublisher = new Redis(redisUrl); // For publishing +export const redisSubscriber = new Redis(redisUrl); // For subscribing