From 644c4b1065e023b1e98d1878482cc22daea834d9 Mon Sep 17 00:00:00 2001 From: Paweł Dybiec Date: Wed, 3 Apr 2019 00:21:20 +0200 Subject: More apps --- composer/app/docker-compose.yml | 2 +- composer/es/Dockerfile | 5 + composer/es/docker-compose.yml | 13 +++ composer/es/kibana.yml | 5 + composer/gitea/docker-compose.yml | 48 +++++++++ composer/grafana/docker-compose.yml | 38 ++++++++ composer/grafana/prometheus/prometheus.yml | 40 ++++++++ composer/nginx/Dockerfile | 4 + composer/nginx/conf.d/dybiec.info.conf | 151 +++++++++++++++++++++++++++++ composer/nginx/docker-compose.yml | 11 +++ composer/nginx/nginx.conf | 31 ++++++ composer/nginx/static-html/index.html | 1 + 12 files changed, 348 insertions(+), 1 deletion(-) create mode 100644 composer/es/Dockerfile create mode 100644 composer/es/docker-compose.yml create mode 100644 composer/es/kibana.yml create mode 100644 composer/gitea/docker-compose.yml create mode 100644 composer/grafana/docker-compose.yml create mode 100644 composer/grafana/prometheus/prometheus.yml create mode 100644 composer/nginx/Dockerfile create mode 100644 composer/nginx/conf.d/dybiec.info.conf create mode 100644 composer/nginx/docker-compose.yml create mode 100644 composer/nginx/nginx.conf create mode 100644 composer/nginx/static-html/index.html (limited to 'composer') diff --git a/composer/app/docker-compose.yml b/composer/app/docker-compose.yml index 899cf44..89aa2b9 100644 --- a/composer/app/docker-compose.yml +++ b/composer/app/docker-compose.yml @@ -3,6 +3,6 @@ services: web: build: . ports: - - "5000:5000" + - "127.0.0.1:5004:5000" redis: image: "redis:alpine" diff --git a/composer/es/Dockerfile b/composer/es/Dockerfile new file mode 100644 index 0000000..8e67d74 --- /dev/null +++ b/composer/es/Dockerfile @@ -0,0 +1,5 @@ +FROM python:3.4-alpine +ADD . /code +WORKDIR /code +RUN pip install -r requirements.txt +CMD ["python", "app.py"] diff --git a/composer/es/docker-compose.yml b/composer/es/docker-compose.yml new file mode 100644 index 0000000..3edf4c0 --- /dev/null +++ b/composer/es/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3' +services: + elasticsearch: + image: "docker.elastic.co/elasticsearch/elasticsearch:6.3.1" + environment: + - "discovery.type=single-node" + #ports: + # - "9200:9200" + # - "9300:9300" + kibana: + image: "docker.elastic.co/kibana/kibana:6.3.1" + ports: + - "5601:5601" diff --git a/composer/es/kibana.yml b/composer/es/kibana.yml new file mode 100644 index 0000000..59691ca --- /dev/null +++ b/composer/es/kibana.yml @@ -0,0 +1,5 @@ +server.name: kibana +server.host: "0" +elasticsearch.url: http://elasticsearch:9200 +xpack.monitoring.ui.container.elasticsearch.enabled: true +xpack.monitoring.enabled: true diff --git a/composer/gitea/docker-compose.yml b/composer/gitea/docker-compose.yml new file mode 100644 index 0000000..d7a209d --- /dev/null +++ b/composer/gitea/docker-compose.yml @@ -0,0 +1,48 @@ +version: '2' +volumes: + data: + external: + name: gitea_data + db: + external: + name: gitea_db +networks: + gitea: + external: false +services: + web: + image: gitea/gitea + volumes: + - data:/data + ports: + - "127.0.0.1:5001:3000" + - "5022:5022" + environment: + - DB_TYPE=postgres + - DB_HOST=db:5432 + - DB_NAME=gitea + - DB_USER=gitea + - DB_PASSW=gitea + - ROOT_URL=https://git.dybiec.info + - SSH_DOMAIN=git.dybiec.info + - SSH_PORT=5022 + - APP_NAME=git.dybiec.info + - DISABLE_REGISTRATION=true + - INSTALL_LOCK=true + - RUN_MODE=prod + networks: + - gitea + depends_on: + - db + restart: always + db: + image: postgres:9.6 + restart: always + environment: + - POSTGRES_USER=gitea + - POSTGRES_PASSWORD=gitea + - POSTGRES_DB=gitea + networks: + - gitea + volumes: + - db/:/var/lib/mysql diff --git a/composer/grafana/docker-compose.yml b/composer/grafana/docker-compose.yml new file mode 100644 index 0000000..02d2555 --- /dev/null +++ b/composer/grafana/docker-compose.yml @@ -0,0 +1,38 @@ +version: '2' +volumes: + grafana-storage: + external: + name: grafana_storage +services: + grafana: + image: grafana/grafana + ports: + - "127.0.0.1:5002:3000" + environment: + - GF_SERVER_ROOT_URL=http://grafana.dybiec.info + - GF_SECURITY_ADMIN_PASSWORD=very_secret + volumes: + - "grafana-storage:/var/lib/grafana" + restart: always + prometheus: + expose: + - 9090 + ports: + - "127.0.0.1:5003:9090" + image: prom/prometheus + extra_hosts: + - "dockerhost:172.17.0.1" + volumes: + - "./prometheus:/etc/prometheus/" + restart: always + cadvisor: + image: google/cadvisor + expose: + - 8080 + volumes: + - "/:/rootfs:ro" + - "/var/run:/var/run:ro" + - "/sys:/sys:ro" + - "/var/lib/docker:/var/lib/docker:ro" + - "/dev/disk:/dev/disk:ro" + diff --git a/composer/grafana/prometheus/prometheus.yml b/composer/grafana/prometheus/prometheus.yml new file mode 100644 index 0000000..2903091 --- /dev/null +++ b/composer/grafana/prometheus/prometheus.yml @@ -0,0 +1,40 @@ +# my global config +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + + # Attach these labels to any time series or alerts when communicating with + # external systems (federation, remote storage, Alertmanager). + external_labels: + monitor: 'codelab-monitor' + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first.rules" + # - "second.rules" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'prometheus' + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: ['localhost:9090'] + + - job_name: 'docker' + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: ['dockerhost:9323'] + - job_name: 'cadvisor' + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: ['cadvisor:8080'] diff --git a/composer/nginx/Dockerfile b/composer/nginx/Dockerfile new file mode 100644 index 0000000..fcca1df --- /dev/null +++ b/composer/nginx/Dockerfile @@ -0,0 +1,4 @@ +FROM nginx:1.15.8-alpine +COPY static-html /usr/share/nginx/html +COPY conf.d /etc/nginx/conf.d +COPY nginx.conf /etc/nginx/nginx.conf diff --git a/composer/nginx/conf.d/dybiec.info.conf b/composer/nginx/conf.d/dybiec.info.conf new file mode 100644 index 0000000..83e2cd6 --- /dev/null +++ b/composer/nginx/conf.d/dybiec.info.conf @@ -0,0 +1,151 @@ +server { + listen 80; + listen 443 ssl; + server_name .dybiec.info; + + ssl_certificate /etc/letsencrypt/live/dybiec.info/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem; + + location / { + root /usr/share/nginx/html; + index index.html; + } + +} +server { + listen 80; + listen 443 ssl; + server_name cnt.dybiec.info; + + ssl_certificate /etc/letsencrypt/live/dybiec.info/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem; + + location / { + proxy_pass http://localhost:5004; + } +} +server { + listen 80; + server_name git.dybiec.info; + return 301 https://$server_name$request_uri; +} +server { + listen 443 ssl; + server_name git.dybiec.info; + + ssl_certificate /etc/letsencrypt/live/dybiec.info/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem; + + location / { + proxy_pass http://localhost:5001; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_redirect off; + proxy_http_version 1.1; + } + gzip_proxied any; + gzip_types + text/css + text/javascript + text/xml + text/plain + application/javascript + application/x-javascript + application/json; + +} +server { + listen 80; + server_name grafana.dybiec.info; + return 301 https://$server_name$request_uri; +} +server { + listen 443 ssl; + server_name grafana.dybiec.info; + + ssl_certificate /etc/letsencrypt/live/dybiec.info/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem; + + location / { + proxy_pass http://localhost:5002; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_redirect off; + proxy_http_version 1.1; + } + gzip_proxied any; + gzip_types + text/css + text/javascript + text/xml + text/plain + application/javascript + application/x-javascript + application/json; + +} +server { + listen 80; + server_name prometheus.dybiec.info; + return 301 https://$server_name$request_uri; +} +server { + listen 443 ssl; + server_name prometheus.dybiec.info; + + ssl_certificate /etc/letsencrypt/live/dybiec.info/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem; + + location / { + proxy_pass http://localhost:5003; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_redirect off; + proxy_http_version 1.1; + } + gzip_proxied any; + gzip_types + text/css + text/javascript + text/xml + text/plain + application/javascript + application/x-javascript + application/json; + +} +server { + listen 80; + server_name octoprint.dybiec.info; + return 301 https://$server_name$request_uri; +} +server { + listen 443 ssl; + server_name octoprint.dybiec.info; + + ssl_certificate /etc/letsencrypt/live/dybiec.info/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/dybiec.info/privkey.pem; + + location / { + proxy_pass http://192.168.255.6/; + proxy_redirect off; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + + client_max_body_size 0; + } + gzip_proxied any; + gzip_types + text/css + text/javascript + text/xml + text/plain + application/javascript + application/x-javascript + application/json; + +} diff --git a/composer/nginx/docker-compose.yml b/composer/nginx/docker-compose.yml new file mode 100644 index 0000000..5e1b20c --- /dev/null +++ b/composer/nginx/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3' +services: + main: + build: . + network_mode: host + volumes: + - "/etc/letsencrypt/live/dybiec.info:/etc/letsencrypt/live/dybiec.info:ro" + - "/etc/letsencrypt/archive/dybiec.info:/etc/letsencrypt/archive/dybiec.info:ro" + ports: + - "443:443" + - "80:80" diff --git a/composer/nginx/nginx.conf b/composer/nginx/nginx.conf new file mode 100644 index 0000000..aa6cbd7 --- /dev/null +++ b/composer/nginx/nginx.conf @@ -0,0 +1,31 @@ +user nginx; +worker_processes 1; + +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + tcp_nopush on; + + keepalive_timeout 65; + + gzip on; + + include /etc/nginx/conf.d/*.conf; +} diff --git a/composer/nginx/static-html/index.html b/composer/nginx/static-html/index.html new file mode 100644 index 0000000..ce01362 --- /dev/null +++ b/composer/nginx/static-html/index.html @@ -0,0 +1 @@ +hello -- cgit 1.4.1