about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--composer/app/docker-compose.yml2
-rw-r--r--composer/es/Dockerfile5
-rw-r--r--composer/es/docker-compose.yml13
-rw-r--r--composer/es/kibana.yml5
-rw-r--r--composer/gitea/docker-compose.yml48
-rw-r--r--composer/grafana/docker-compose.yml38
-rw-r--r--composer/grafana/prometheus/prometheus.yml40
-rw-r--r--composer/nginx/Dockerfile4
-rw-r--r--composer/nginx/conf.d/dybiec.info.conf151
-rw-r--r--composer/nginx/docker-compose.yml11
-rw-r--r--composer/nginx/nginx.conf31
-rw-r--r--composer/nginx/static-html/index.html1
-rw-r--r--docker.yml22
13 files changed, 366 insertions, 5 deletions
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=<job_name>` 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
diff --git a/docker.yml b/docker.yml
index 7ceded3..a067fb6 100644
--- a/docker.yml
+++ b/docker.yml
@@ -6,9 +6,23 @@
     - synchronize:
         src: composer/
         dest: composer
-    - docker_service:
+    - name: counter app
+      docker_service:
+        build: yes
         project_src: composer/app
+    - name: nginx
+      docker_service:
         recreate: always
-      register: output
-    - debug:
-        var: output
+        build: yes
+        project_src: composer/nginx
+    - name: gitea
+      docker_service:
+        #recreate: always
+        #build: yes
+        project_src: composer/gitea
+    - name: grafana
+      docker_service:
+        recreate: always
+        build: yes
+        #state: absent
+        project_src: composer/grafana