Update development stack with proper images and Traefik configuration
- Update GitLab to latest image and configure for HTTPS via Traefik - Update pgAdmin to latest image and add Traefik routing - Update Jupyter to latest image and add Traefik routing - Add traefik-network to all web-accessible services - Configure unique hostnames: gitlab, pgadmin, jupyter - Remove direct port exposure in favor of Traefik reverse proxy - Update service descriptions and access URLs
This commit is contained in:
@@ -1,26 +1,29 @@
|
|||||||
# Development Services
|
# Development Services
|
||||||
# Tools and services for development work
|
# Tools and services for development work
|
||||||
|
|
||||||
|
# Service Access URLs:
|
||||||
|
# - GitLab: https://gitlab.${DOMAIN}
|
||||||
|
# - pgAdmin: https://pgadmin.${DOMAIN}
|
||||||
|
# - Jupyter: https://jupyter.${DOMAIN}
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# GitLab CE - Self-hosted Git repository manager
|
# GitLab CE - Self-hosted Git repository manager
|
||||||
# Access at: http://server-ip:8929
|
# Access at: https://gitlab.${DOMAIN}
|
||||||
# Note: Requires significant resources (4GB+ RAM recommended)
|
# Note: Requires significant resources (4GB+ RAM recommended)
|
||||||
gitlab:
|
gitlab:
|
||||||
image: gitlab/gitlab-ce:16.7.0-ce.0
|
image: gitlab/gitlab-ce:latest
|
||||||
container_name: gitlab
|
container_name: gitlab
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
ports:
|
- traefik-network
|
||||||
- "8929:80" # Web UI
|
|
||||||
- "2222:22" # SSH
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./config/gitlab/config:/etc/gitlab
|
- ./config/gitlab/config:/etc/gitlab
|
||||||
- gitlab-logs:/var/log/gitlab
|
- gitlab-logs:/var/log/gitlab
|
||||||
- gitlab-data:/var/opt/gitlab
|
- gitlab-data:/var/opt/gitlab
|
||||||
environment:
|
environment:
|
||||||
GITLAB_OMNIBUS_CONFIG: |
|
GITLAB_OMNIBUS_CONFIG: |
|
||||||
external_url 'http://${SERVER_IP}:8929'
|
external_url 'https://gitlab.${DOMAIN}'
|
||||||
gitlab_rails['gitlab_shell_ssh_port'] = 2222
|
gitlab_rails['gitlab_shell_ssh_port'] = 2222
|
||||||
gitlab_rails['time_zone'] = '${TZ:-America/New_York}'
|
gitlab_rails['time_zone'] = '${TZ:-America/New_York}'
|
||||||
shm_size: '256m'
|
shm_size: '256m'
|
||||||
@@ -33,6 +36,12 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "homelab.category=development"
|
- "homelab.category=development"
|
||||||
- "homelab.description=Self-hosted Git repository manager"
|
- "homelab.description=Self-hosted Git repository manager"
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.gitlab.rule=Host(`gitlab.${DOMAIN}`)"
|
||||||
|
- "traefik.http.routers.gitlab.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.gitlab.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.gitlab.middlewares=authelia@docker"
|
||||||
|
- "traefik.http.services.gitlab.loadbalancer.server.port=80"
|
||||||
|
|
||||||
# PostgreSQL - Database for development
|
# PostgreSQL - Database for development
|
||||||
# Access at: localhost:5432 from other containers
|
# Access at: localhost:5432 from other containers
|
||||||
@@ -77,16 +86,15 @@ services:
|
|||||||
- "homelab.description=Redis in-memory data store"
|
- "homelab.description=Redis in-memory data store"
|
||||||
|
|
||||||
# pgAdmin - PostgreSQL management UI
|
# pgAdmin - PostgreSQL management UI
|
||||||
# Access at: http://server-ip:5050
|
# Access at: https://pgadmin.${DOMAIN}
|
||||||
pgadmin:
|
pgadmin:
|
||||||
image: dpage/pgadmin4:8.2
|
image: dpage/pgadmin4:latest
|
||||||
container_name: pgadmin
|
container_name: pgadmin
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- database-network
|
- database-network
|
||||||
- homelab-network
|
- homelab-network
|
||||||
ports:
|
- traefik-network
|
||||||
- "5050:80"
|
|
||||||
volumes:
|
volumes:
|
||||||
- pgadmin-data:/var/lib/pgadmin
|
- pgadmin-data:/var/lib/pgadmin
|
||||||
environment:
|
environment:
|
||||||
@@ -98,18 +106,23 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "homelab.category=development"
|
- "homelab.category=development"
|
||||||
- "homelab.description=PostgreSQL administration UI"
|
- "homelab.description=PostgreSQL administration UI"
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.pgadmin.rule=Host(`pgadmin.${DOMAIN}`)"
|
||||||
|
- "traefik.http.routers.pgadmin.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.pgadmin.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.pgadmin.middlewares=authelia@docker"
|
||||||
|
- "traefik.http.services.pgadmin.loadbalancer.server.port=80"
|
||||||
|
|
||||||
# Jupyter Lab - Interactive computing notebooks
|
# Jupyter Lab - Interactive computing notebooks
|
||||||
# Access at: http://server-ip:8888
|
# Access at: https://jupyter.${DOMAIN}
|
||||||
# Token displayed in logs on first start
|
# Token displayed in logs on first start
|
||||||
jupyter:
|
jupyter:
|
||||||
image: jupyter/scipy-notebook:2023-12-25
|
image: jupyter/scipy-notebook:latest
|
||||||
container_name: jupyter
|
container_name: jupyter
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- homelab-network
|
- homelab-network
|
||||||
ports:
|
- traefik-network
|
||||||
- "8888:8888"
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./config/jupyter:/home/jovyan/work
|
- ./config/jupyter:/home/jovyan/work
|
||||||
environment:
|
environment:
|
||||||
@@ -128,6 +141,12 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "homelab.category=development"
|
- "homelab.category=development"
|
||||||
- "homelab.description=Jupyter Lab for data science and ML"
|
- "homelab.description=Jupyter Lab for data science and ML"
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.jupyter.rule=Host(`jupyter.${DOMAIN}`)"
|
||||||
|
- "traefik.http.routers.jupyter.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.jupyter.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.jupyter.middlewares=authelia@docker"
|
||||||
|
- "traefik.http.services.jupyter.loadbalancer.server.port=8888"
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
gitlab-logs:
|
gitlab-logs:
|
||||||
@@ -146,3 +165,5 @@ networks:
|
|||||||
driver: bridge
|
driver: bridge
|
||||||
homelab-network:
|
homelab-network:
|
||||||
external: true
|
external: true
|
||||||
|
traefik-network:
|
||||||
|
external: true
|
||||||
|
|||||||
Reference in New Issue
Block a user