chore: add Dockerfiles and gitignore files for all services
Root: - Add comprehensive .gitignore covering all subprojects Seeder API (Node.js): - Add Dockerfile with multi-stage build, non-root user, health check - Add .dockerignore and .gitignore Job Scraper (Python): - Add Dockerfile with Python 3.12, non-root user - Add .dockerignore and .gitignore Existing backend/frontend Dockerfiles and .dockerignore already optimized
This commit is contained in:
parent
a4abcf8e05
commit
9667e94545
7 changed files with 215 additions and 0 deletions
84
.gitignore
vendored
Normal file
84
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# =============================================================================
|
||||||
|
# GoHorse Jobs - Root .gitignore
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# OS & IDE
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
*.code-workspace
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Environment files (keep examples)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
!.env.example
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Logs
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Backend (Go)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
backend/main
|
||||||
|
backend/*.exe
|
||||||
|
backend/tmp/
|
||||||
|
backend/.air.toml
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Frontend (Next.js)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
frontend/.next/
|
||||||
|
frontend/out/
|
||||||
|
frontend/node_modules/
|
||||||
|
frontend/.pnp/
|
||||||
|
frontend/.pnp.js
|
||||||
|
frontend/.vercel/
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Seeder API (Node.js)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
seeder-api/node_modules/
|
||||||
|
seeder-api/dist/
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Job Scraper (Python)
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
job-scraper-multisite/__pycache__/
|
||||||
|
job-scraper-multisite/*.pyc
|
||||||
|
job-scraper-multisite/.venv/
|
||||||
|
job-scraper-multisite/venv/
|
||||||
|
job-scraper-multisite/output/*.csv
|
||||||
|
!job-scraper-multisite/output/.gitkeep
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Build artifacts
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
*.exe
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
coverage/
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Misc
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
.cache/
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
13
job-scraper-multisite/.dockerignore
Normal file
13
job-scraper-multisite/.dockerignore
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Python scraper .dockerignore
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
*.pyo
|
||||||
|
.venv/
|
||||||
|
venv/
|
||||||
|
.env
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
README.md
|
||||||
|
*.md
|
||||||
|
output/*.csv
|
||||||
|
.DS_Store
|
||||||
29
job-scraper-multisite/.gitignore
vendored
Normal file
29
job-scraper-multisite/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Python
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
*.so
|
||||||
|
.Python
|
||||||
|
.venv/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
|
||||||
|
# Output (keep .gitkeep)
|
||||||
|
output/*.csv
|
||||||
|
|
||||||
|
# Environment
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Distribution
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
*.egg-info/
|
||||||
25
job-scraper-multisite/Dockerfile
Normal file
25
job-scraper-multisite/Dockerfile
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# =============================================================================
|
||||||
|
# GoHorse Jobs Scraper - Python Dockerfile
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
FROM python:3.12-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
COPY requirements.txt ./
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Copy source
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Security: Run as non-root
|
||||||
|
RUN useradd -m -u 1001 scraper && \
|
||||||
|
chown -R scraper:scraper /app
|
||||||
|
|
||||||
|
USER scraper
|
||||||
|
|
||||||
|
# Create output directory
|
||||||
|
RUN mkdir -p /app/output
|
||||||
|
|
||||||
|
CMD ["python", "main_scraper.py"]
|
||||||
11
seeder-api/.dockerignore
Normal file
11
seeder-api/.dockerignore
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Seeder API .dockerignore
|
||||||
|
node_modules/
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
README.md
|
||||||
|
*.md
|
||||||
|
.DS_Store
|
||||||
|
*.log
|
||||||
20
seeder-api/.gitignore
vendored
Normal file
20
seeder-api/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Node.js
|
||||||
|
node_modules/
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# Git
|
||||||
|
.git/
|
||||||
33
seeder-api/Dockerfile
Normal file
33
seeder-api/Dockerfile
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
# =============================================================================
|
||||||
|
# GoHorse Jobs Seeder API - Production Dockerfile
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
FROM node:20-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm ci --only=production && npm cache clean --force
|
||||||
|
|
||||||
|
# Copy source
|
||||||
|
COPY src/ ./src/
|
||||||
|
|
||||||
|
# Security: Run as non-root
|
||||||
|
RUN addgroup -g 1001 -S nodejs && \
|
||||||
|
adduser -u 1001 -S seeder -G nodejs && \
|
||||||
|
chown -R seeder:nodejs /app
|
||||||
|
|
||||||
|
USER seeder
|
||||||
|
|
||||||
|
# Environment
|
||||||
|
ENV NODE_ENV=production \
|
||||||
|
PORT=3001
|
||||||
|
|
||||||
|
EXPOSE 3001
|
||||||
|
|
||||||
|
# Health check
|
||||||
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||||
|
CMD wget -qO- http://localhost:3001/health || exit 1
|
||||||
|
|
||||||
|
CMD ["node", "src/index.js"]
|
||||||
Loading…
Reference in a new issue