Update Redis configuration and Docker setup; improve README and code structure for clarity

This commit is contained in:
Arunavo Ray
2025-05-19 09:51:36 +05:30
parent 4c134c1302
commit 6efbfa6dd4
5 changed files with 33 additions and 27 deletions

View File

@@ -98,6 +98,7 @@ docker run -d --name gitea-mirror-redis redis:alpine
docker pull ghcr.io/arunavo4/gitea-mirror:latest docker pull ghcr.io/arunavo4/gitea-mirror:latest
# Run the application with a link to the Redis container # 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 \ docker run -d -p 4321:4321 --link gitea-mirror-redis:redis \
-e REDIS_URL=redis://redis:6379 \ -e REDIS_URL=redis://redis:6379 \
ghcr.io/arunavo4/gitea-mirror:latest 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`) - `HOST`: Host to bind to (default: `0.0.0.0`)
- `PORT`: Port to listen on (default: `4321`) - `PORT`: Port to listen on (default: `4321`)
- `JWT_SECRET`: Secret key for JWT token generation (important for security) - `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 #### Manual Installation

View File

@@ -54,7 +54,7 @@ services:
- redis - redis
environment: environment:
- NODE_ENV=development - NODE_ENV=development
- DATABASE_URL=sqlite://data/gitea-mirror.db - DATABASE_URL=file:data/gitea-mirror.db
- HOST=0.0.0.0 - HOST=0.0.0.0
- PORT=4321 - PORT=4321
- JWT_SECRET=dev-secret-key - JWT_SECRET=dev-secret-key
@@ -75,6 +75,7 @@ services:
- GITEA_ORGANIZATION=${GITEA_ORGANIZATION:-github-mirrors} - GITEA_ORGANIZATION=${GITEA_ORGANIZATION:-github-mirrors}
- GITEA_ORG_VISIBILITY=${GITEA_ORG_VISIBILITY:-public} - GITEA_ORG_VISIBILITY=${GITEA_ORG_VISIBILITY:-public}
- DELAY=${DELAY:-3600} - DELAY=${DELAY:-3600}
- REDIS_URL=redis://redis:6379
healthcheck: healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:4321/"] test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:4321/"]
interval: 30s interval: 30s

View File

@@ -4,7 +4,7 @@
services: services:
# Production service with real data # Production service with real data
gitea-mirror: 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: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
@@ -12,7 +12,7 @@ services:
- linux/amd64 - linux/amd64
- linux/arm64 - linux/arm64
cache_from: 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 container_name: gitea-mirror
restart: unless-stopped restart: unless-stopped
ports: ports:
@@ -23,7 +23,7 @@ services:
- redis - redis
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- DATABASE_URL=sqlite://data/gitea-mirror.db - DATABASE_URL=file:data/gitea-mirror.db
- HOST=0.0.0.0 - HOST=0.0.0.0
- PORT=4321 - PORT=4321
- JWT_SECRET=${JWT_SECRET:-your-secret-key-change-this-in-production} - JWT_SECRET=${JWT_SECRET:-your-secret-key-change-this-in-production}
@@ -44,6 +44,7 @@ services:
- GITEA_ORGANIZATION=${GITEA_ORGANIZATION:-github-mirrors} - GITEA_ORGANIZATION=${GITEA_ORGANIZATION:-github-mirrors}
- GITEA_ORG_VISIBILITY=${GITEA_ORG_VISIBILITY:-public} - GITEA_ORG_VISIBILITY=${GITEA_ORG_VISIBILITY:-public}
- DELAY=${DELAY:-3600} - DELAY=${DELAY:-3600}
- REDIS_URL=redis://redis:6379
healthcheck: healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=3", "--spider", "http://localhost:4321/"] test: ["CMD", "wget", "--no-verbose", "--tries=3", "--spider", "http://localhost:4321/"]
interval: 30s interval: 30s

View File

@@ -224,26 +224,25 @@ export function ConfigTabs() {
useEffect(() => { useEffect(() => {
const generateDockerCode = () => { const generateDockerCode = () => {
return `version: "3.3" return `services:
services: gitea-mirror:
gitea-mirror: image: arunavo4/gitea-mirror:latest
image: arunavo4/gitea-mirror:latest restart: unless-stopped
restart: unless-stopped container_name: gitea-mirror
container_name: gitea-mirror environment:
environment: - GITHUB_USERNAME=${config.githubConfig.username}
- GITHUB_USERNAME=${config.githubConfig.username} - GITEA_URL=${config.giteaConfig.url}
- GITEA_URL=${config.giteaConfig.url} - GITEA_TOKEN=${config.giteaConfig.token}
- GITEA_TOKEN=${config.giteaConfig.token} - GITHUB_TOKEN=${config.githubConfig.token}
- GITHUB_TOKEN=${config.githubConfig.token} - SKIP_FORKS=${config.githubConfig.skipForks}
- SKIP_FORKS=${config.githubConfig.skipForks} - PRIVATE_REPOSITORIES=${config.githubConfig.privateRepositories}
- PRIVATE_REPOSITORIES=${config.githubConfig.privateRepositories} - MIRROR_ISSUES=${config.githubConfig.mirrorIssues}
- MIRROR_ISSUES=${config.githubConfig.mirrorIssues} - MIRROR_STARRED=${config.githubConfig.mirrorStarred}
- MIRROR_STARRED=${config.githubConfig.mirrorStarred} - PRESERVE_ORG_STRUCTURE=${config.githubConfig.preserveOrgStructure}
- PRESERVE_ORG_STRUCTURE=${config.githubConfig.preserveOrgStructure} - SKIP_STARRED_ISSUES=${config.githubConfig.skipStarredIssues}
- SKIP_STARRED_ISSUES=${config.githubConfig.skipStarredIssues} - GITEA_ORGANIZATION=${config.giteaConfig.organization}
- GITEA_ORGANIZATION=${config.giteaConfig.organization} - GITEA_ORG_VISIBILITY=${config.giteaConfig.visibility}
- GITEA_ORG_VISIBILITY=${config.giteaConfig.visibility} - DELAY=${config.scheduleConfig.interval}`;
- DELAY=${config.scheduleConfig.interval}`;
}; };
const code = generateDockerCode(); const code = generateDockerCode();

View File

@@ -1,4 +1,8 @@
import Redis from "ioredis"; import Redis from "ioredis";
export const redisPublisher = new Redis(); // For publishing // Connect to Redis using REDIS_URL environment variable or default to redis://redis:6379
export const redisSubscriber = new Redis(); // For subscribing 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