You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.5 KiB
126 lines
3.5 KiB
version: '3.7'
|
|
services:
|
|
# Nginx reverse proxy container
|
|
# Reference:
|
|
# https://github.com/jwilder/nginx-proxy
|
|
nginx-proxy: # TODO: maybe split this to the two underlying images?
|
|
image: jwilder/nginx-proxy
|
|
container_name: nginx-proxy
|
|
restart: always
|
|
environment:
|
|
- DEFAULT_HOST=mthmmy.tk
|
|
labels:
|
|
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
|
|
logging:
|
|
options:
|
|
max-size: '4m'
|
|
max-file: '10'
|
|
networks:
|
|
- janus-net
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- /var/run/docker.sock:/tmp/docker.sock:ro
|
|
- ./volumes/nginx/conf:/etc/nginx/conf.d
|
|
- ./volumes/nginx/vhost:/etc/nginx/vhost.d
|
|
- ./volumes/nginx/html:/usr/share/nginx/html
|
|
- ./volumes/nginx/dhparam:/etc/nginx/dhparam
|
|
- ./volumes/nginx/certs:/etc/nginx/certs:ro
|
|
|
|
# Letsencrypt automated creation, renewal and use of Let's Encrypt certificates
|
|
# Reference:
|
|
# https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion
|
|
letsencrypt:
|
|
image: jrcs/letsencrypt-nginx-proxy-companion
|
|
container_name: nginx-proxy-le
|
|
restart: always
|
|
depends_on:
|
|
- nginx-proxy
|
|
logging:
|
|
options:
|
|
max-size: '4m'
|
|
max-file: '10'
|
|
networks:
|
|
- janus-net
|
|
volumes:
|
|
- ./volumes/nginx/conf:/etc/nginx/conf.d
|
|
- ./volumes/nginx/vhost:/etc/nginx/vhost.d
|
|
- ./volumes/nginx/html:/usr/share/nginx/html
|
|
- ./volumes/nginx/dhparam:/etc/nginx/dhparam
|
|
- ./volumes/nginx/certs:/etc/nginx/certs:rw
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
|
|
# Jenkins automation server, image bundled with Blue Ocean
|
|
# Reference:
|
|
# https://jenkins.io/doc/book/blueocean/
|
|
jenkins:
|
|
build: ./jenkins
|
|
container_name: jenkins
|
|
restart: always
|
|
user: root
|
|
env_file:
|
|
- ./env/jenkins.env
|
|
secrets:
|
|
- jenkins_admin_username
|
|
- jenkins_admin_password
|
|
networks:
|
|
- janus-net
|
|
volumes:
|
|
- ./volumes/jenkins/log:/var/log/jenkins
|
|
- jenkins-data:/var/jenkins_home
|
|
- ./jenkins/downloads:/var/jenkins_home/downloads
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
|
|
# Sonarqube continuous inspection of code quality
|
|
# References:
|
|
# https://docs.sonarqube.org/latest/
|
|
# https://github.com/SonarSource/docker-sonarqube/tree/master/recipes
|
|
sonarqube:
|
|
image: sonarqube
|
|
container_name: sonarqube
|
|
restart: always
|
|
env_file:
|
|
- ./env/sonar.env
|
|
networks:
|
|
- janus-net
|
|
- sonar-net
|
|
volumes:
|
|
- sonarqube_conf:/opt/sonarqube/conf
|
|
- sonarqube_data:/opt/sonarqube/data
|
|
- sonarqube_extensions:/opt/sonarqube/extensions
|
|
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
|
|
sonar-db:
|
|
image: postgres
|
|
container_name: sonar-db
|
|
restart: always
|
|
environment: # TODO: figure out another way to pass the username and password?
|
|
- POSTGRES_USER=sonar
|
|
- POSTGRES_PASSWORD=sonar
|
|
volumes:
|
|
- postgresql:/var/lib/postgresql
|
|
- postgresql_data:/var/lib/postgresql/data
|
|
networks:
|
|
- sonar-net
|
|
|
|
# Networks in use
|
|
# TODO: maybe add/split to separate networks
|
|
networks:
|
|
janus-net:
|
|
driver: bridge
|
|
sonar-net:
|
|
driver: bridge
|
|
# Secrets in use
|
|
secrets: # TODO: figure out a better way to do this?
|
|
jenkins_admin_username:
|
|
file: ./jenkins/user
|
|
jenkins_admin_password:
|
|
file: ./jenkins/pass
|
|
volumes:
|
|
jenkins-data:
|
|
sonarqube_conf:
|
|
sonarqube_data:
|
|
sonarqube_extensions:
|
|
sonarqube_bundled-plugins:
|
|
postgresql:
|
|
postgresql_data:
|