A Dockerized Jenkins CI-CD system for Concordia
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.
 
 
 
 

123 lines
4.8 KiB

version: '3.7'
services:
# Nginx reverse proxy container
# Reference:
# https://github.com/jwilder/nginx-proxy
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
restart: always
environment:
- DEFAULT_HOST=ecentrics.net
- ENABLE_IPV6=true
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
logging:
options:
max-size: '4m'
max-file: '10'
networks:
- janus_network
- concordia_staging_network
- concordia_production_network
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
- ./nginx-reverse-proxy-confs/client-max-body-size.conf:/etc/nginx/conf.d/client-max-body-size.conf:ro
- ./nginx-reverse-proxy-confs/www.ecentrics.net:/etc/nginx/vhost.d/www.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.jenkins.ecentrics.net:/etc/nginx/vhost.d/www.jenkins.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.concordia.ecentrics.net:/etc/nginx/vhost.d/www.concordia.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.staging.concordia.ecentrics.net:/etc/nginx/vhost.d/www.staging.concordia.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.guide.concordia.ecentrics.net:/etc/nginx/vhost.d/www.guide.concordia.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.staging.guide.concordia.ecentrics.net:/etc/nginx/vhost.d/www.staging.guide.concordia.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.ganache.ecentrics.net:/etc/nginx/vhost.d/www.ganache.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.staging.ganache.ecentrics.net:/etc/nginx/vhost.d/www.staging.ganache.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.rendezvous.ecentrics.net:/etc/nginx/vhost.d/www.rendezvous.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.contracts.concordia.ecentrics.net:/etc/nginx/vhost.d/www.contracts.concordia.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.staging.contracts.concordia.ecentrics.net:/etc/nginx/vhost.d/www.staging.contracts.concordia.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.pinner.concordia.ecentrics.net:/etc/nginx/vhost.d/www.pinner.concordia.ecentrics.net_location:ro
- ./nginx-reverse-proxy-confs/www.staging.pinner.concordia.ecentrics.net:/etc/nginx/vhost.d/www.staging.pinner.concordia.ecentrics.net_location: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_network
- concordia_staging_network
- concordia_production_network
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:
dockerfile: ./Dockerfile
context: ./jenkins
image: ecentrics/janus
container_name: janus
restart: always
user: root
env_file:
- ./env/jenkins.env
ports:
- 8080:8080
secrets:
- jenkins_admin_username
- jenkins_admin_password
- jenkins_dockerhub_username
- jenkins_dockerhub_password
networks:
- janus_network
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
- janus_common:/mnt/janus/common
# Networks in use
networks:
janus_network:
driver: bridge
concordia_staging_network:
driver: bridge
concordia_production_network:
driver: bridge
# Secrets in use
secrets:
jenkins_admin_username:
file: ./jenkins/secrets/adminUsername
jenkins_admin_password:
file: ./jenkins/secrets/adminPassword
jenkins_dockerhub_username:
file: ./jenkins/secrets/dockerhubUsername
jenkins_dockerhub_password:
file: ./jenkins/secrets/dockerhubPassword
volumes:
jenkins_data:
janus_common: