Created
December 4, 2023 14:41
-
-
Save 0-vortex/13376479a0974574aa21a52075d98897 to your computer and use it in GitHub Desktop.
docker-self-hosted
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: '3' | |
services: | |
##### GitLab Stack ##### | |
##### GitLab Stack ##### | |
gitlab: | |
image: 'gitlab/gitlab-ce:latest' | |
restart: always | |
container_name: gitlab | |
hostname: # YOUR HOSTNAME ex. git.example.com | |
links: | |
- smtp | |
environment: | |
GITLAB_OMNIBUS_CONFIG: | | |
external_url '# YOUR URL ex. https://git.example.com #'; | |
gitlab_rails['gitlab_email_from'] = '# YOUR EMAIL ADDRESS #'; | |
gitlab_rails['gitlab_email_reply_to'] = '# YOUR EMAIL ADDRESS #'; | |
gitlab_rails['smtp_enable'] = 'true'; | |
gitlab_rails['smtp_address'] = 'smtp'; | |
letsencrypt['enable'] = false; | |
nginx['listen_https'] = false; | |
nginx['listen_port'] = 80; | |
ports: | |
- '180:80' | |
volumes: | |
- '/srv/configs/gitlab/gitlab:/etc/gitlab' | |
- '/srv/gitlab/logs:/var/log/gitlab' | |
- '/srv/gitlab/data:/var/opt/gitlab' | |
##### End GitLab ##### | |
##### GitLab CI/CD Runner ##### | |
gitlab-runner: | |
image: 'gitlab/gitlab-runner:latest' | |
restart: always | |
container_name: gitlab-runner | |
links: | |
- gitlab | |
environment: | |
- CI_SERVER_URL=http://gitlab/ | |
- RUNNER_NAME=local-docker-runner | |
- REGISTER_NON_INTERACTIVE=true | |
- REGISTRATION_TOKEN=# YOUR REGISTRATION TOKEN FROM GITLAB # | |
- RUNNER_EXECUTOR=docker | |
- DOCKER_IMAGE=ubuntu:artful | |
- REGISTER_LOCKED=false | |
volumes: | |
- /srv/configs/gitlab/gitlab-runner:/etc/gitlab-runner | |
- /srv/gitlab-runner/home:/home/gitlab-runner | |
- /var/run/docker.sock:/var/run/docker.sock | |
##### End GitLab CI/CD Runner ##### | |
##### End GitLab Stack ##### | |
##### Sonarqube Static Code Analysis ##### | |
sonar-postgres: | |
image: postgres:latest | |
restart: always | |
environment: | |
POSTGRES_DB: sonarqube | |
POSTGRES_USER: sonarqube | |
POSTGRES_PASSWORD: sonarqube | |
volumes: | |
- /srv/sonarqube/postgres:/var/lib/postgresql/data | |
sonarqube: | |
container_name: sonarqube | |
image: 'sonarqube:latest' | |
restart: always | |
links: | |
- smtp | |
- sonar-postgres | |
ports: | |
- 780:9000 | |
environment: | |
- SONARQUBE_JDBC_URL=jdbc:postgresql://sonar-postgres/sonarqube | |
- SONARQUBE_JDBC_USERNAME=sonarqube | |
- SONARQUBE_JDBC_PASSWORD=sonarqube | |
- SMTP_HOST=smtp | |
volumes: | |
- /srv/sonarqube/conf:/opt/sonarqube/conf | |
- /srv/sonarqube/data:/opt/sonarqube/data | |
- /srv/sonarqube/extensions:/opt/sonarqube/extensions | |
- /srv/sonarqube/bundled-plugins:/opt/sonarqube/lib/bundled-plugins/opt/sonarqube/lib/bundled-plugins | |
##### End Sonarqube Static Code Analysis ##### | |
##### SMTP Email ##### | |
smtp: | |
image: 'tianon/exim4:latest' | |
restart: always | |
environment: | |
GMAIL_USER: # YOUR GMAIL USERNAME # | |
GMAIL_PASSWORD: # YOUR GMAIL PASSWORD # | |
##### End SMTP Email ##### | |
##### Hound Code Search ##### | |
hound: | |
container_name: hound | |
image: 'etsy/hound:latest' | |
restart: always | |
ports: | |
- 580:6080 | |
volumes: | |
- /srv/configs/hound/config.json:/data/config.json | |
- /srv/hound/data:/data/data | |
##### End Hound Code Search ##### | |
##### Grafana Dashboard ##### | |
grafana: | |
container_name: grafana | |
image: 'grafana/grafana:latest' | |
restart: always | |
links: | |
- smtp | |
ports: | |
- 680:3000 | |
environment: | |
- GF_SERVER_ENABLE_GZIP=true | |
- GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s/ | |
- GF_SERVER_DOMAIN=# DOMAIN ex. graphs.example.com # | |
- GF_SMTP_ENABLED=true | |
- GF_SMTP_HOST=smtp | |
- GF_AUTH_ORG_NAME=anon_org | |
- GF_AUTH_ANONYMOUS_ENABLED=true | |
volumes: | |
- /srv/configs/grafana:/var/lib/grafana | |
##### End Grafana Dashboard ##### | |
##### Sentry Stack ##### | |
sentry-base: | |
image: 'sentry:latest' | |
container_name: sentry-base | |
restart: always | |
depends_on: | |
- sentry-redis | |
- sentry-postgres | |
links: | |
- sentry-redis | |
- sentry-postgres | |
ports: | |
- 880:9000 | |
env_file: | |
- sentry.env | |
volumes: | |
- /srv/configs/sentry/sentry:/var/lib/sentry/files | |
sentry-cron: | |
image: 'sentry:latest' | |
container_name: sentry-cron | |
restart: always | |
depends_on: | |
- sentry-redis | |
- sentry-postgres | |
links: | |
- sentry-redis | |
- sentry-postgres | |
command: "sentry run cron" | |
env_file: | |
- sentry.env | |
volumes: | |
- /srv/configs/sentry/sentry:/var/lib/sentry/files | |
sentry-worker: | |
image: 'sentry:latest' | |
container_name: sentry-worker | |
restart: always | |
depends_on: | |
- sentry-redis | |
- sentry-postgres | |
links: | |
- sentry-redis | |
- sentry-postgres | |
command: "sentry run worker" | |
env_file: | |
- sentry.env | |
volumes: | |
- /srv/configs/sentry/sentry:/var/lib/sentry/files | |
sentry-redis: | |
image: 'redis:alpine' | |
container_name: sentry-redis | |
restart: always | |
sentry-postgres: | |
image: 'postgres:latest' | |
container_name: sentry-postgres | |
restart: always | |
environment: | |
POSTGRES_USER: sentry | |
POSTGRES_PASSWORD: sentry | |
POSTGRES_DB: sentry | |
volumes: | |
- /srv/configs/sentry/postgres:/var/lib/postgresql/data | |
##### End Sentry Stack ##### | |
##### Prometheus Monitoring Stack ##### | |
prometheus: | |
container_name: prometheus | |
image: 'prom/prometheus:latest' | |
restart: always | |
links: | |
- grafana | |
- cadvisor | |
- node-exporter | |
command: | |
- '--config.file=/etc/prometheus/prometheus.yml' | |
- '--storage.tsdb.path=/prometheus' | |
- '--web.console.libraries=/usr/share/prometheus/console_libraries' | |
- '--web.console.templates=/usr/share/prometheus/consoles' | |
volumes: | |
- /srv/configs/prometheus:/etc/prometheus | |
- /srv/prometheus:/prometheus | |
# Monitoring for this host # | |
node-exporter: | |
image: prom/node-exporter | |
container_name: prometheus_node-exporter | |
volumes: | |
- /proc:/host/proc:ro | |
- /sys:/host/sys:ro | |
- /:/rootfs:ro | |
command: | |
- '--path.procfs=/host/proc' | |
- '--path.sysfs=/host/sys' | |
- --collector.filesystem.ignored-mount-points | |
- "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($|/)" | |
restart: always | |
# Docker container monitoring # | |
cadvisor: | |
image: google/cadvisor | |
restart: always | |
volumes: | |
- /:/rootfs:ro | |
- /var/run:/var/run:rw | |
- /sys:/sys:ro | |
- /var/lib/docker/:/var/lib/docker:ro | |
##### End Prometheus Monitoring Stack ##### | |
##### ELK Stack ##### | |
elasticsearch: | |
image: elasticsearch:7.2.0 | |
container_name: elasticsearch | |
restart: always | |
volumes: | |
- /srv/configs/elk/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro | |
- /srv/elk/elasticsearch/data:/usr/share/elasticsearch/data | |
ports: | |
- "9200:9200" | |
- "9300:9300" | |
environment: | |
ES_JAVA_OPTS: "-Xmx1g -Xms1g" | |
networks: | |
- elk | |
logstash: | |
image: logstash:7.2.0 | |
container_name: logstash | |
restart: always | |
volumes: | |
- /srv/configs/elk/logstash/config:/usr/share/logstash/config:ro | |
- /srv/configs/elk/logstash/pipeline:/usr/share/logstash/pipeline:ro | |
ports: | |
- "5000:5000" | |
environment: | |
LS_JAVA_OPTS: "-Xmx256m -Xms256m" | |
networks: | |
- elk | |
depends_on: | |
- elasticsearch | |
kibana: | |
image: kibana:7.2.0 | |
container_name: kibana | |
restart: always | |
volumes: | |
- /srv/configs/elk/kibana/:/usr/share/kibana/config:ro | |
ports: | |
- "5601:5601" | |
networks: | |
- elk | |
depends_on: | |
- elasticsearch | |
##### End ELK Stack ##### | |
##### Portainer Docker Web GUI ##### | |
portainer: | |
container_name: portainer | |
image: 'portainer/portainer:latest' | |
restart: always | |
ports: | |
- '480:9000' | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock | |
- /srv/configs/portainer:/data | |
##### End Portainer Docker Web GUI ##### | |
networks: | |
##### ELK Stack Network ##### | |
elk: | |
driver: bridge | |
##### End ELK Stack Network ##### |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment