import files

This commit is contained in:
Yann Autissier
2021-02-09 17:05:00 +01:00
parent f5c4576411
commit 44a6d37ba5
425 changed files with 23195 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
MAILCATCHER_SERVICE_1080_TAGS=urlprefix-mailcatcher.${APP_DOMAIN}/
TOGGLE_API_SERVICE_80_TAGS=urlprefix-toggle-api.${APP_DOMAIN}/
TOGGLE_UI_SERVICE_80_TAGS=urlprefix-toggle-ui.${APP_DOMAIN}/
TOGGLE__API_BASE_URL=http://toggle-api.${APP_DOMAIN}
+26
View File
@@ -0,0 +1,26 @@
version: '3.6'
services:
mailcatcher:
image: 1001pharmadev/mailcatcher:latest
labels:
- SERVICE_1025_CHECK_TCP=true
- SERVICE_1025_NAME=${COMPOSE_SERVICE_NAME}-mailcatcher-1025
- SERVICE_1080_CHECK_HTTP=/
- SERVICE_1080_NAME=${COMPOSE_SERVICE_NAME}-mailcatcher-1080
- SERVICE_1080_TAGS=${MAILCATCHER_SERVICE_1080_TAGS}
networks:
- private
- public
ports:
- 1025
- 1080
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+43
View File
@@ -0,0 +1,43 @@
version: '3.6'
services:
toggle-api:
image: 1001pharmadev/qandidate-toggle-api:latest
depends_on:
- redis
environment:
- TOGGLE__REDIS_DSN=tcp://redis:6379
labels:
- SERVICE_80_CHECK_HTTP=/toggles
- SERVICE_80_NAME=${COMPOSE_SERVICE_NAME}-toggle-api-80
- SERVICE_80_TAGS=${TOGGLE_API_SERVICE_80_TAGS}
networks:
- private
- public
ports:
- 80
restart: always
toggle-ui:
image: 1001pharmadev/qandidate-toggle-ui:latest
depends_on:
- toggle-api
environment:
- TOGGLE__API_BASE_URL=${TOGGLE__API_BASE_URL}
labels:
- SERVICE_80_CHECK_HTTP=/
- SERVICE_80_NAME=${COMPOSE_SERVICE_NAME}-toggle-ui-80
- SERVICE_80_TAGS=${TOGGLE_UI_SERVICE_80_TAGS}
networks:
- private
- public
ports:
- 80
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+1
View File
@@ -0,0 +1 @@
SYSCTL_CONFIG=vm.max_map_count=262144 vm.overcommit_memory=1 fs.file-max=8388608 net.core.somaxconn=1024
+14
View File
@@ -0,0 +1,14 @@
version: '3.6'
services:
sysctl:
command: sh -c 'sysctl -q -w ${SYSCTL_CONFIG} ||:'
image: alpine:latest
networks:
- private
privileged: true
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+19
View File
@@ -0,0 +1,19 @@
.PHONY: base
base: docker-network-create stack-base-up base-ssh-add
.PHONY: ssh-add
ssh-add: base-ssh-add
.PHONY: base-ssh-add
base-ssh-add: base-ssh-key
$(eval SSH_PRIVATE_KEYS := $(foreach file,$(SSH_DIR)/id_rsa $(filter-out $(wildcard $(SSH_DIR)/id_rsa),$(wildcard $(SSH_DIR)/*)),$(if $(shell grep "PRIVATE KEY" $(file) 2>/dev/null),$(notdir $(file)))))
$(call docker-run,$(DOCKER_SSH_AUTH) $(DOCKER_IMAGE_CLI),sh -c "$(foreach file,$(patsubst %,$(SSH_DIR)/%,$(SSH_PRIVATE_KEYS)),ssh-add -l |grep -qw $$(ssh-keygen -lf $(file) 2>/dev/null |awk '{print $$2}') 2>/dev/null || ssh-add $(file) ||: &&) true")
.PHONY: base-ssh-key
base-ssh-key: stack-base-up
ifneq (,$(filter true,$(DRONE)))
$(call exec,[ ! -d $(SSH_DIR) ] && mkdir -p $(SSH_DIR) && chown $(UID) $(SSH_DIR) && chmod 0700 $(SSH_DIR) ||:)
else
$(eval DOCKER_RUN_VOLUME += -v $(SSH_DIR):$(SSH_DIR))
endif
$(if $(SSH_KEY),$(eval export SSH_KEY ?= $(SSH_KEY)) $(call docker-run,$(DOCKER_IMAGE_CLI),echo -e "$$SSH_KEY" > $(SSH_DIR)/${COMPOSE_PROJECT_NAME}_id_rsa && chmod 0400 $(SSH_DIR)/${COMPOSE_PROJECT_NAME}_id_rsa && chown $(UID) $(SSH_DIR)/${COMPOSE_PROJECT_NAME}_id_rsa ||:))
+61
View File
@@ -0,0 +1,61 @@
version: '3.6'
services:
cli:
build:
args:
- DOCKER_BUILD_DIR=docker/cli
- GIT_AUTHOR_NAME=${GIT_AUTHOR_NAME}
- GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL}
- SSH_BASTION_USERNAME=${SSH_BASTION_USERNAME}
- SSH_BASTION_HOSTNAME=${SSH_BASTION_HOSTNAME}
- SSH_PUBLIC_HOST_KEYS=${SSH_PUBLIC_HOST_KEYS}
- SSH_PRIVATE_IP_RANGE=${SSH_PRIVATE_IP_RANGE}
- UID=${UID}
- USER=${USER}
context: ../..
dockerfile: docker/cli/Dockerfile
target: ${DOCKER_BUILD_TARGET}
command: tail -f /dev/null
container_name: ${DOCKER_NAME_CLI}
depends_on:
- ssh
environment:
- SSH_AUTH_SOCK=/tmp/ssh-agent/socket
image: ${DOCKER_IMAGE_CLI}:${DOCKER_IMAGE_TAG}
networks:
- private
restart: always
volumes:
- ssh:/tmp/ssh-agent:ro
- ${MONOREPO_DIR}:${MONOREPO_DIR}:cached
working_dir: ${MONOREPO_DIR}
ssh:
build:
args:
- DOCKER_BUILD_DIR=docker/ssh
- UID=${UID}
- USER=${USER}
context: ../..
dockerfile: docker/ssh/Dockerfile
target: ${DOCKER_BUILD_TARGET}
container_name: ${DOCKER_NAME_SSH}
image: ${DOCKER_IMAGE_SSH}:${DOCKER_IMAGE_TAG}
networks:
- private
restart: always
volumes:
- ssh:/tmp/ssh-agent
volumes:
ssh:
driver: local
driver_opts:
type: tmpfs
device: tmpfs
o: uid=${UID}
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+1
View File
@@ -0,0 +1 @@
develop ?= redmine
+1
View File
@@ -0,0 +1 @@
drone ?= drone/drone drone/drone-runner-docker drone/gc
+9
View File
@@ -0,0 +1,9 @@
DRONE_GITHUB_CLIENT_ID=github_client_id
DRONE_GITHUB_CLIENT_SECRET=github_client_secret
DRONE_RPC_SECRET=drone_rpc_secret
DRONE_RUNNER_CAPACITY=1
DRONE_SERVER_HOST=drone.${APP_DOMAIN}
DRONE_SERVER_PROTO=http
DRONE_SERVER_SERVICE_80_TAGS=urlprefix-${DRONE_SERVER_HOST}/
DRONE_USER_CREATE=username:gitaccount,admin:true
DRONE_USER_FILTER=gitaccount
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone-runner-docker:
image: drone/drone-runner-docker:1.1
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone-runner-docker:
image: drone/drone-runner-docker:1.2
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone-runner-docker:
image: drone/drone-runner-docker:1.3
@@ -0,0 +1,7 @@
version: '3.6'
services:
drone-runner-docker:
environment:
- DRONE_DEBUG=true
- DRONE_TRACE=true
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone-runner-docker:
image: drone/drone-runner-docker:latest
+24
View File
@@ -0,0 +1,24 @@
version: '3.6'
services:
drone-runner-docker:
depends_on:
- drone
environment:
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
- DRONE_RPC_HOST=drone
- DRONE_RPC_PROTO=http
- DRONE_RUNNER_CAPACITY=${DRONE_RUNNER_CAPACITY}
- DRONE_RUNNER_NAME=${HOSTNAME}
labels:
- SERVICE_3000_IGNORE=true
networks:
- private
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone:
image: drone/drone:1.6
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone:
image: drone/drone:1.7
+7
View File
@@ -0,0 +1,7 @@
version: '3.6'
services:
drone:
environment:
- DRONE_LOGS_DEBUG=true
- DRONE_LOGS_TRACE=true
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone:
image: drone/drone:latest
+44
View File
@@ -0,0 +1,44 @@
version: '3.6'
services:
drone:
environment:
- DRONE_GIT_ALWAYS_AUTH=false
- DRONE_GITHUB_SERVER=https://github.com
- DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}
- DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}
- DRONE_LOGS_COLOR=true
- DRONE_LOGS_PRETTY=true
- DRONE_PROMETHEUS_ANONYMOUS_ACCESS=true
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
- DRONE_SERVER_HOST=${DRONE_SERVER_HOST}
- DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO}
- DRONE_TLS_AUTOCERT=true
- DRONE_USER_CREATE=${DRONE_USER_CREATE}
- DRONE_USER_FILTER=${DRONE_USER_FILTER}
labels:
- SERVICE_80_NAME=${COMPOSE_SERVICE_NAME}-drone-80
- SERVICE_80_CHECK_TCP=true
- SERVICE_80_CHECK_INITIAL_STATUS=passing
- SERVICE_80_TAGS=${DRONE_SERVER_SERVICE_80_TAGS}
- SERVICE_443_IGNORE=true
networks:
- private
- public
ports:
- 80
- 443
restart: always
volumes:
- drone:/data
volumes:
drone:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone-gc:
image: drone/gc:1.0
+8
View File
@@ -0,0 +1,8 @@
version: '3.6'
services:
drone-gc:
environment:
- GC_DEBUG=true
- GC_DEBUG_COLOR=true
- GC_DEBUG_PRETTY=true
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
drone-gc:
image: drone/gc:latest
+18
View File
@@ -0,0 +1,18 @@
version: '3.6'
services:
drone-gc:
image: drone/gc:latest
environment:
- GC_CACHE=20gb
- GC_INTERVAL=5m
networks:
- private
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+1
View File
@@ -0,0 +1 @@
elastic ?= elastic/curator elastic/elasticsearch elastic/kibana alpine/sysctl
+11
View File
@@ -0,0 +1,11 @@
APM_SERVER_SERVICE_8200_TAGS=urlprefix-apm.${APP_DOMAIN}/
CURATOR_LOGFORMAT=default
CURATOR_LOGLEVEL=INFO
CURATOR_MASTER_ONLY=False
CURATOR_TIMEOUT=30
CURATOR_USE_SSL=False
ELASTICSEARCH_HOST=elasticsearch
ELASTICSEARCH_PORT=9200
ELASTICSEARCH_PROTOCOL=http
ELASTICSEARCH_SERVICE_9200_TAGS=urlprefix-elasticsearch.${APP_DOMAIN}/
KIBANA_SERVICE_5601_TAGS=urlprefix-kibana.${APP_DOMAIN}/
+29
View File
@@ -0,0 +1,29 @@
version: '3.6'
services:
apm-server-oss:
build:
args:
- DOCKER_BUILD_DIR=docker/apm-server-oss
context: ../..
dockerfile: docker/apm-server-oss/Dockerfile
image: ${DOCKER_REPOSITORY}/apm-server-oss:${DOCKER_IMAGE_TAG}
command: -c apm-server.yml --strict.perms=false -e -E output.elasticsearch.hosts=["${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"] -E output.elasticsearch.protocol=${ELASTICSEARCH_PROTOCOL} -E output.elasticsearch.username=${ELASTICSEARCH_USERNAME} -E output.elasticsearch.password=${ELASTICSEARCH_PASSWORD} -E apm-server.register.ingest.pipeline.enabled=false
labels:
- SERVICE_8200_CHECK_HTTP=/
- SERVICE_8200_NAME=${COMPOSE_SERVICE_NAME}-apm-server-oss-8200
- SERVICE_8200_TAGS=${APM_SERVER_SERVICE_8200_TAGS}
networks:
- private
- public
ports:
- 8200
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+27
View File
@@ -0,0 +1,27 @@
version: '3.6'
services:
apm-server:
image: docker.elastic.co/apm/apm-server:7.4.2
command: -c apm-server.yml --strict.perms=false -e -E output.elasticsearch.hosts=["${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"] -E output.elasticsearch.protocol=${ELASTICSEARCH_PROTOCOL} -E output.elasticsearch.username=${ELASTICSEARCH_USERNAME} -E output.elasticsearch.password=${ELASTICSEARCH_PASSWORD}
labels:
- SERVICE_8200_CHECK_HTTP=/
- SERVICE_8200_NAME=${COMPOSE_SERVICE_NAME}-apm-server-8200
- SERVICE_8200_TAGS=${APM_SERVER_SERVICE_8200_TAGS}
networks:
private:
aliases:
- apm.${DOCKER_NETWORK_PRIVATE}
- apm.elastic.${DOCKER_NETWORK_PRIVATE}
public:
ports:
- 8200
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+6
View File
@@ -0,0 +1,6 @@
version: '3.6'
services:
curator:
depends_on:
- elasticsearch
+27
View File
@@ -0,0 +1,27 @@
version: '3.6'
services:
curator:
build:
args:
- DOCKER_BUILD_DIR=docker/elastic/curator
context: ../..
dockerfile: docker/elastic/curator/Dockerfile
target: ${DOCKER_BUILD_TARGET}
environment:
- DEPLOY=${DEPLOY}
- HOSTS=${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}
- LOGFORMAT=${CURATOR_LOGFORMAT}
- LOGLEVEL=${CURATOR_LOGLEVEL}
- MASTER_ONLY=${CURATOR_MASTER_ONLY}
- PORT=${ELASTICSEARCH_PORT}
- TIMEOUT=${CURATOR_TIMEOUT}
- USE_SSL=${CURATOR_USE_SSL}
networks:
- private
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+7
View File
@@ -0,0 +1,7 @@
version: '3.6'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:5.3.3
environment:
- discovery.zen.minimum_master_nodes=1
+7
View File
@@ -0,0 +1,7 @@
version: '3.6'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
environment:
- node.data=true
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
@@ -0,0 +1,7 @@
version: '3.6'
services:
elasticsearch:
environment:
- discovery.type=single-node
+49
View File
@@ -0,0 +1,49 @@
version: '3.6'
services:
elasticsearch:
depends_on:
- sysctl
environment:
- ES_JAVA_OPTS=-Xmx1024m -Xms1024m
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
- xpack.graph.enabled=false
- xpack.watcher.enabled=false
- cluster.name=elasticsearch-${ENV}
- network.host=0.0.0.0
- http.cors.enabled=true
- http.cors.allow-credentials=true
- http.cors.allow-methods=OPTIONS,HEAD,GET,POST,PUT,DELETE
- http.cors.max-age=0
- http.cors.allow-origin=*
- http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length
labels:
- SERVICE_9200_CHECK_HTTP=/
- SERVICE_9200_NAME=${COMPOSE_SERVICE_NAME}-elasticsearch-9200
- SERVICE_9200_TAGS=${ELASTICSEARCH_SERVICE_9200_TAGS}
- SERVICE_9300_CHECK_TCP=true
- SERVICE_9300_NAME=${COMPOSE_SERVICE_NAME}-elasticsearch-9300
networks:
- private
- public
ports:
- 9200
- 9300
ulimits:
nofile:
soft: 65536
hard: 65536
volumes:
- elasticsearch:/usr/share/elasticsearch/data
restart: always
volumes:
elasticsearch:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+9
View File
@@ -0,0 +1,9 @@
version: '3.6'
services:
kibana-oss:
image: docker.elastic.co/kibana/kibana-oss:7.4.2
environment:
- ELASTICSEARCH_HOSTS="${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"
- KIBANA_INDEX=.kibana-oss.${ENV}
- SERVER_NAME=kibana.${APP_DOMAIN}
+9
View File
@@ -0,0 +1,9 @@
version: '3.6'
services:
kibana-oss:
image: docker.elastic.co/kibana/kibana-oss:7.7.1
environment:
- ELASTICSEARCH_HOSTS="${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"
- KIBANA_INDEX=.kibana-oss.${ENV}
- SERVER_NAME=kibana.${APP_DOMAIN}
+6
View File
@@ -0,0 +1,6 @@
version: '3.6'
services:
kibana-oss:
depends_on:
- elasticsearch
+22
View File
@@ -0,0 +1,22 @@
version: '3.6'
services:
kibana-oss:
labels:
- SERVICE_5601_CHECK_HTTP=/app/kibana
- SERVICE_5601_NAME=${COMPOSE_SERVICE_NAME}-kibana-oss-5601
- SERVICE_5601_TAGS=${KIBANA_SERVICE_5601_TAGS}
networks:
- private
- public
ports:
- 5601
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+7
View File
@@ -0,0 +1,7 @@
version: '3.6'
services:
kibana:
image: docker.elastic.co/kibana/kibana:5.3.3
environment:
- ELASTICSEARCH_URL="${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"
+9
View File
@@ -0,0 +1,9 @@
version: '3.6'
services:
kibana:
image: docker.elastic.co/kibana/kibana:7.4.2
environment:
- ELASTICSEARCH_HOSTS="${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"
- KIBANA_INDEX=.kibana.${ENV}
- SERVER_NAME=kibana.${APP_DOMAIN}
+9
View File
@@ -0,0 +1,9 @@
version: '3.6'
services:
kibana:
image: docker.elastic.co/kibana/kibana:7.7.1
environment:
- ELASTICSEARCH_HOSTS="${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"
- KIBANA_INDEX=.kibana.${ENV}
- SERVER_NAME=kibana.${APP_DOMAIN}
+6
View File
@@ -0,0 +1,6 @@
version: '3.6'
services:
kibana:
depends_on:
- elasticsearch
+22
View File
@@ -0,0 +1,22 @@
version: '3.6'
services:
kibana:
labels:
- SERVICE_5601_CHECK_HTTP=/app/kibana
- SERVICE_5601_NAME=${COMPOSE_SERVICE_NAME}-kibana-5601
- SERVICE_5601_TAGS=${KIBANA_SERVICE_5601_TAGS}
networks:
- private
- public
ports:
- 5601
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+6
View File
@@ -0,0 +1,6 @@
GRAFANA_AWS_ACCESS_KEY=${AWS_ACCESS_KEY_ID}
GRAFANA_AWS_SECRET_KEY=${AWS_SECRET_ACCESS_KEY}
GRAFANA_MYSQL_DB=grafana
GRAFANA_MYSQL_PASSWORD=grafana
GRAFANA_MYSQL_USER=grafana
GRAFANA_SERVICE_3000_TAGS=urlprefix-grafana.${APP_DOMAIN}/
+41
View File
@@ -0,0 +1,41 @@
version: '3.6'
services:
grafana:
build:
args:
- AWS_ACCESS_KEY=${GRAFANA_AWS_ACCESS_KEY}
- AWS_SECRET_KEY=${GRAFANA_AWS_SECRET_KEY}
- DOCKER_BUILD_DIR=docker/grafana
- MYSQL_GRAFANA_DB=${GRAFANA_MYSQL_DB}
- MYSQL_GRAFANA_PASSWORD=${GRAFANA_MYSQL_PASSWORD}
- MYSQL_GRAFANA_USER=${GRAFANA_MYSQL_USER}
context: ../..
dockerfile: docker/grafana/Dockerfile
environment:
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
image: ${DOCKER_REPOSITORY}/grafana:${DOCKER_IMAGE_TAG}
labels:
- SERVICE_3000_NAME=${COMPOSE_SERVICE_NAME}-grafana-3000
- SERVICE_3000_CHECK_TCP=true
- SERVICE_3000_CHECK_INITIAL_STATUS=passing
- SERVICE_3000_TAGS=${GRAFANA_SERVICE_3000_TAGS}
networks:
- private
- public
ports:
- 3000
restart: always
volumes:
- grafana:/var/lib/grafana
volumes:
grafana:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+1
View File
@@ -0,0 +1 @@
logs ?= sematext/logagent
+18
View File
@@ -0,0 +1,18 @@
version: '3.6'
services:
memcached:
image: memcached:alpine
labels:
- SERVICE_11211_CHECK_TCP=true
- SERVICE_11211_NAME=${COMPOSE_SERVICE_NAME}-memcached-11211
networks:
- private
ports:
- 11211
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+1
View File
@@ -0,0 +1 @@
monitoring ?= grafana prometheus/alertmanager prometheus/blackbox-exporter prometheus/es-exporter prometheus/prometheus
+1
View File
@@ -0,0 +1 @@
MYSQL_ROOT_PASSWORD=root
+10
View File
@@ -0,0 +1,10 @@
version: '3.6'
services:
mysql:
build:
args:
- DOCKER_BUILD_DIR=docker/mysql/5.6
context: ../..
dockerfile: docker/mysql/5.6/Dockerfile
image: ${DOCKER_REPOSITORY}/mysql:${DOCKER_IMAGE_TAG}
+6
View File
@@ -0,0 +1,6 @@
version: '3.6'
services:
mysql:
ports:
- 3303:3306
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
mysql:
image: mysql:latest
+6
View File
@@ -0,0 +1,6 @@
version: '3.6'
services:
mysql:
ports:
- 3306:3306
+24
View File
@@ -0,0 +1,24 @@
version: '3.6'
services:
mysql:
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
labels:
- SERVICE_CHECK_SCRIPT=container-check-status $$SERVICE_IP
- SERVICE_3306_NAME=${COMPOSE_SERVICE_NAME}-mysql-3306
networks:
- private
ports:
- 3306
volumes:
- mysql:/var/lib/mysql
restart: always
volumes:
mysql:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+1
View File
@@ -0,0 +1 @@
newrelic ?= newrelic/php-daemon
+20
View File
@@ -0,0 +1,20 @@
version: '3.6'
services:
php-daemon:
image: newrelic/php-daemon:latest
# command: "/usr/bin/newrelic-daemon --loglevel debug"
labels:
- SERVICE_31339_NAME=${COMPOSE_SERVICE_NAME}-php-daemon-31339
- SERVICE_31339_CHECK_TCP=true
- SERVICE_31339_CHECK_INITIAL_STATUS=passing
networks:
- private
ports:
- 31339
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+1
View File
@@ -0,0 +1 @@
STATIC_SERVICE_80_TAGS=urlprefix-static.${APP_DOMAIN}/
+30
View File
@@ -0,0 +1,30 @@
version: '3.6'
services:
static:
image: nginx:alpine
command: /bin/sh -c "grep autoindex /etc/nginx/conf.d/default.conf >/dev/null 2>&1 || sed -i 's|index index.html index.htm;|index index.html index.htm;\n autoindex on;|' /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
labels:
- SERVICE_80_NAME=${COMPOSE_SERVICE_NAME}-nginx-80
- SERVICE_80_CHECK_TCP=true
- SERVICE_80_CHECK_INITIAL_STATUS=passing
- SERVICE_80_TAGS=${STATIC_SERVICE_80_TAGS}
networks:
- private
- public
ports:
- 80
restart: always
volumes:
- static:/usr/share/nginx/html:ro
volumes:
static:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+9
View File
@@ -0,0 +1,9 @@
.PHONY: node
node: docker-network-create-$(DOCKER_NETWORK_PUBLIC) node-openssl stack-node-up
.PHONY: node-openssl
node-openssl:
docker run --rm --mount source=$(COMPOSE_PROJECT_NAME_INFRA_NODE)_ssl-certs,target=/certs alpine:latest [ -f /certs/$(SSL_HOSTNAME).crt.pem -a -f /certs/$(SSL_HOSTNAME).key.pem ] \
|| docker run --rm -e SSL_HOSTNAME=$(SSL_HOSTNAME) --mount source=$(COMPOSE_PROJECT_NAME_INFRA_NODE)_ssl-certs,target=/certs alpine:latest sh -c "apk --no-cache add openssl \
&& { [ -f /certs/${SSL_HOSTNAME}.key.pem ] || openssl genrsa -out /certs/${SSL_HOSTNAME}.key.pem 2048; } \
&& openssl req -key /certs/${SSL_HOSTNAME}.key.pem -out /certs/${SSL_HOSTNAME}.crt.pem -addext extendedKeyUsage=serverAuth -addext subjectAltName=DNS:${SSL_HOSTNAME} -subj \"/C=/ST=/L=/O=/CN=${SSL_HOSTNAME}\" -x509 -days 365"
+8
View File
@@ -0,0 +1,8 @@
CONSUL_ACL_TOKENS_MASTER=01234567-89AB-CDEF-0123-456789ABCDEF
CONSUL_CONSUL_HTTP_TOKEN=01234567-89AB-CDEF-0123-456789ABCDEF
CONSUL_SERVICE_8500_TAGS=urlprefix-consul.${APP_DOMAIN}/
FABIO_CONSUL_HTTP_TOKEN=01234567-89AB-CDEF-0123-456789ABCDEF
FABIO_SERVICE_9998_TAGS=urlprefix-fabio.${APP_DOMAIN}/
PORTAINER_SERVICE_9000_TAGS=urlprefix-portainer.${APP_DOMAIN}/
REGISTRATOR_CONSUL_HTTP_TOKEN=01234567-89AB-CDEF-0123-456789ABCDEF
SSL_HOSTNAME=${APP_DOMAIN}
+2
View File
@@ -0,0 +1,2 @@
CADVISOR_EXPORTER_SERVICE_8080_TAGS=urlprefix-cadvisor-exporter.${APP_DOMAIN}/
NODE_EXPORTER_SERVICE_9100_TAGS=urlprefix-node-exporter.${APP_DOMAIN}/
+49
View File
@@ -0,0 +1,49 @@
version: '3.6'
services:
cadvisor-exporter:
image: google/cadvisor:latest
hostname: ${HOSTNAME}
labels:
- SERVICE_8080_NAME=${COMPOSE_SERVICE_NAME}-cadvisor-exporter-8080
- SERVICE_8080_CHECK_TCP=true
- SERVICE_8080_CHECK_INITIAL_STATUS=passing
- SERVICE_8080_TAGS=${CADVISOR_SERVICE_EXPORTER_8080_TAGS}
- SERVICE_9200_IGNORE=true
networks:
- public
ports:
- 8080
restart: always
volumes:
- /:/rootfs:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /var/run:/var/run:rw
node-exporter:
command:
- --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)($$|/)"
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
image: prom/node-exporter:latest
hostname: ${HOSTNAME}
labels:
- SERVICE_9100_NAME=${COMPOSE_SERVICE_NAME}-node-exporter-9100
- SERVICE_9100_CHECK_TCP=true
- SERVICE_9100_CHECK_INITIAL_STATUS=passing
- SERVICE_9100_TAGS=${SERVICE_NODE_EXPORTER_HTTP_TAGS}
networks:
- public
ports:
- 9100
restart: always
volumes:
- /:/rootfs:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
networks:
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+110
View File
@@ -0,0 +1,110 @@
version: '3.6'
services:
consul:
build:
args:
- DOCKER_BUILD_DIR=docker/consul
context: ../..
dockerfile: docker/consul/Dockerfile
image: ${DOCKER_REPOSITORY_INFRA_NODE}/consul:${DOCKER_IMAGE_TAG}
environment:
CONSUL_BIND_INTERFACE: '${DOCKER_HOST_IFACE}'
CONSUL_CLIENT_INTERFACE: '${DOCKER_HOST_IFACE}'
CONSUL_HTTP_TOKEN: '${CONSUL_CONSUL_HTTP_TOKEN}'
CONSUL_LOCAL_CONFIG: '{ "log_level": "warn"
, "enable_script_checks": true
, "acl": { "enabled": true
, "default_policy": "deny"
, "enable_token_persistence": true
, "tokens": { "master": "$CONSUL_ACL_TOKENS_MASTER"
, "agent": "$CONSUL_CONSUL_HTTP_TOKEN"
}
}
}'
hostname: ${HOSTNAME}
labels:
- SERVICE_8300_IGNORE=true
- SERVICE_8301_IGNORE=true
- SERVICE_8302_IGNORE=true
- SERVICE_8500_CHECK_HTTP=/ui
- SERVICE_8500_NAME=${COMPOSE_SERVICE_NAME}-consul-8500
- SERVICE_8500_TAGS=${CONSUL_SERVICE_8500_TAGS}
- SERVICE_8600_IGNORE=true
- SERVICE_ADDRESS=${DOCKER_HOST_INET}
network_mode: host
restart: always
volumes:
- consul:/consul/data
- /var/run/docker.sock:/var/run/docker.sock
fabio:
command: -registry.backend "consul" -registry.consul.addr "consul:8500" -registry.consul.token "$FABIO_CONSUL_HTTP_TOKEN" -proxy.addr ":80,:443;cs=local" -proxy.cs "cs=local;type=file;cert=/certs/${SSL_HOSTNAME}.crt.pem;key=/certs/${SSL_HOSTNAME}.key.pem"
depends_on:
- consul
extra_hosts:
- consul:${DOCKER_HOST_INET}
hostname: ${HOSTNAME}
image: fabiolb/fabio:latest
labels:
- SERVICE_80_CHECK_TCP=true
- SERVICE_80_NAME=${COMPOSE_SERVICE_NAME}-fabio-80
- SERVICE_443_CHECK_TCP=true
- SERVICE_443_NAME=${COMPOSE_SERVICE_NAME}-fabio-443
- SERVICE_9998_CHECK_TCP=true
- SERVICE_9998_NAME=${COMPOSE_SERVICE_NAME}-fabio-9998
- SERVICE_9998_TAGS=${FABIO_SERVICE_9998_TAGS}
- SERVICE_9999_IGNORE=true
ports:
- 80:80
- 443:443
- 9998
networks:
- public
restart: always
volumes:
- ssl-certs:/certs
portainer:
image: portainer/portainer:latest
labels:
- SERVICE_8000_IGNORE=true
- SERVICE_9000_CHECK_HTTP=/
- SERVICE_9000_NAME=${COMPOSE_SERVICE_NAME}-portainer-9000
- SERVICE_9000_TAGS=${PORTAINER_SERVICE_9000_TAGS}
networks:
- public
ports:
- 8000
- 9000
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer:/data
registrator:
build:
args:
- DOCKER_BUILD_DIR=docker/registrator
context: ../..
dockerfile: docker/registrator/Dockerfile
command: -internal -cleanup -deregister always -resync=30 -useIpFromNetwork node -useIpFromLabel SERVICE_ADDRESS consul://consul:8500
depends_on:
- consul
environment:
- CONSUL_HTTP_TOKEN=${REGISTRATOR_CONSUL_HTTP_TOKEN}
extra_hosts:
- consul:${DOCKER_HOST_INET}
hostname: ${HOSTNAME}
image: ${DOCKER_REPOSITORY_INFRA_NODE}/registrator:${DOCKER_IMAGE_TAG}
network_mode: host
restart: always
volumes:
- /var/run/docker.sock:/tmp/docker.sock
volumes:
consul:
portainer:
ssl-certs:
networks:
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+14
View File
@@ -0,0 +1,14 @@
version: '3.6'
services:
pdns-recursor:
build:
args:
- DOCKER_BUILD_DIR=docker/pdns-server
context: ../../..
dockerfile: docker/pdns-server/Dockerfile
command: /usr/local/sbin/pdns_recursor --local-address='192.168.0.1:53' --allow-from='127.0.0.0/8, 192.168.1.0/24, 172.16.0.0/12'
image: ${DOCKER_REPOSITORY}/pdns-recursor:${DOCKER_IMAGE_TAG}
hostname: ${HOSTNAME}
network_mode: host
restart: always
+3
View File
@@ -0,0 +1,3 @@
VSFTPD_S3_AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
VSFTPD_S3_AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
VSFTPD_S3_FTPD_USERS=ftpuser::ftppass::ftpbucket
+39
View File
@@ -0,0 +1,39 @@
version: '3.6'
services:
vsftpd-s3:
build:
args:
- DOCKER_BUILD_DIR=docker/vsftpd-s3
context: ../../..
dockerfile: docker/vsftpd-s3/Dockerfile
cap_add:
- sys_admin
devices:
- /dev/fuse
environment:
- AWS_ACCESS_KEY_ID=${VSFTPD_S3_AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${VSFTPD_S3_AWS_SECRET_ACCESS_KEY}
- DIR_REMOTE=${VSFTPD_S3_DIR_REMOTE}
- FTP_HOST=${VSFTPD_S3_FTP_HOST}
- FTP_PASS=${VSFTPD_S3_FTP_PASS}
- FTP_SYNC=${VSFTPD_S3_FTP_SYNC}
- FTP_USER=${VSFTPD_S3_FTP_USER}
- FTPD_USER=${VSFTPD_S3_FTPD_USER}
- FTPD_USERS=${VSFTPD_S3_FTPD_USERS}
- PASV_MAX_PORT=${VSFTPD_S3_PASV_MAX_PORT}
- PASV_MIN_PORT=${VSFTPD_S3_PASV_MIN_PORT}
image: ${DOCKER_REPOSITORY}/vsftpd-s3:${DOCKER_IMAGE_TAG}
labels:
- SERVICE_21_NAME=${COMPOSE_SERVICE_NAME}-vsftpd-s3-21
- SERVICE_21_CHECK_TCP=true
- SERVICE_21_CHECK_INITIAL_STATUS=passing
- SERVICE_22_NAME=${COMPOSE_SERVICE_NAME}-vsftpd-s3-22
- SERVICE_22_CHECK_TCP=true
- SERVICE_22_CHECK_INITIAL_STATUS=passing
- SERVICE_65000_IGNORE=true
hostname: ${HOSTNAME}
security_opt:
- apparmor:unconfined
network_mode: host
restart: always
+3
View File
@@ -0,0 +1,3 @@
POSTGRES_DB=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
postgres:
image: postgres:9.6-alpine
+6
View File
@@ -0,0 +1,6 @@
version: '3.6'
services:
postgres:
ports:
- 5433:5432
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
postgres:
image: postgres:latest
+24
View File
@@ -0,0 +1,24 @@
version: '3.6'
services:
postgres:
command: -c logging_collector=on -c log_destination='stderr' -c log_directory='/shared/logs/postgres' -c log_filename='postgresql.log' -c log_file_mode='0644' -c log_rotation_age=0 -c log_checkpoints=on -c log_hostname=on -c log_line_prefix='%t [%p] [%l-1] db=%d,user=%u '
depends_on:
- shared-logs
ports:
- 5432:5432
volumes:
- shared:/shared
shared-logs:
command: sh -c 'mkdir -p /shared/logs/postgres && chown 70:70 /shared/logs/postgres'
image: alpine:latest
volumes:
- shared:/shared
volumes:
shared:
driver: local
driver_opts:
type: none
device: ${MONOREPO_DIR}/shared
o: bind
+25
View File
@@ -0,0 +1,25 @@
version: '3.6'
services:
postgres:
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
labels:
- SERVICE_5432_NAME=${COMPOSE_SERVICE_NAME}-postgres-5432
networks:
- private
ports:
- 5432
volumes:
- postgres:/var/lib/postgresql/data
restart: always
volumes:
postgres:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+8
View File
@@ -0,0 +1,8 @@
ALERTMANAGER_SERVICE_9093_TAGS=urlprefix-alertmanager.${APP_DOMAIN}/
ALERTMANAGER_SLACK_WEBHOOK_ID=https://hooks.slack.com/services/123456789/123456789/ABCDEFGHIJKLMNOPQRSTUVWX
BLACKBOX_SERVICE_9115_TAGS=urlprefix-blackbox.${APP_DOMAIN}/
ES_EXPORTER_ELASTICSEARCH_URL=elasticsearch:9200
ES_EXPORTER_SERVICE_9206_TAGS=urlprefix-es-exporter.${APP_DOMAIN}/
PROMETHEUS_MONITORING_PRIMARY_TARGETS_BLACKBOX=https://www.google.com
PROMETHEUS_MONITORING_SECONDARY_TARGETS_BLACKBOX=
PROMETHEUS_SERVICE_9090_TAGS=urlprefix-prometheus.${APP_DOMAIN}/
+30
View File
@@ -0,0 +1,30 @@
version: '3.6'
services:
alertmanager:
build:
args:
- DOCKER_BUILD_DIR=docker/alertmanager
- SLACK_WEBHOOK_ID=${ALERTMANAGER_SLACK_WEBHOOK_ID}
context: ../..
dockerfile: docker/alertmanager/Dockerfile
image: ${DOCKER_REPOSITORY}/alertmanager:${DOCKER_IMAGE_TAG}
labels:
- SERVICE_9093_NAME=${COMPOSE_SERVICE_NAME}-alertmanager-9093
- SERVICE_9093_CHECK_TCP=true
- SERVICE_9093_CHECK_INITIAL_STATUS=passing
- SERVICE_9093_TAGS=${ALERTMANAGER_SERVICE_9093_TAGS}
networks:
- private
- public
ports:
- 9093
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+29
View File
@@ -0,0 +1,29 @@
version: '3.6'
services:
blackbox:
build:
args:
- DOCKER_BUILD_DIR=docker/blackbox
context: ../..
dockerfile: docker/blackbox/Dockerfile
image: ${DOCKER_REPOSITORY}/blackbox:${DOCKER_IMAGE_TAG}
labels:
- SERVICE_9115_NAME=${COMPOSE_SERVICE_NAME}-blackbox-9115
- SERVICE_9115_CHECK_TCP=true
- SERVICE_9115_CHECK_INITIAL_STATUS=passing
- SERVICE_9115_TAGS=${BLACKBOX_SERVICE_9115_TAGS}
networks:
- private
- public
ports:
- 9115
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+30
View File
@@ -0,0 +1,30 @@
version: '3.6'
services:
es-exporter:
build:
args:
- DOCKER_BUILD_DIR=docker/es-exporter
context: ../..
dockerfile: docker/es-exporter/Dockerfile
command: -e ${ES_EXPORTER_ELASTICSEARCH_URL}
image: ${DOCKER_REPOSITORY}/es-exporter:${DOCKER_IMAGE_TAG}
labels:
- SERVICE_9206_NAME=${COMPOSE_SERVICE_NAME}-es-exporter-9206
- SERVICE_9206_CHECK_TCP=true
- SERVICE_9206_CHECK_INITIAL_STATUS=passing
- SERVICE_9206_TAGS=${ES_EXPORTER_SERVICE_9206_TAGS}
networks:
- private
- public
ports:
- 9206
restart: always
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+36
View File
@@ -0,0 +1,36 @@
version: '3.6'
services:
prometheus:
build:
args:
- DOCKER_BUILD_DIR=docker/prometheus
- MONITORING_PRIMARY_TARGETS_BLACKBOX=${PROMETHEUS_MONITORING_PRIMARY_TARGETS_BLACKBOX}
- MONITORING_SECONDARY_TARGETS_BLACKBOX=${PROMETHEUS_MONITORING_SECONDARY_TARGETS_BLACKBOX}
context: ../..
dockerfile: docker/prometheus/Dockerfile
image: ${DOCKER_REPOSITORY}/prometheus:${DOCKER_IMAGE_TAG}
labels:
- SERVICE_9090_NAME=${COMPOSE_SERVICE_NAME}-prometheus-9090
- SERVICE_9090_CHECK_TCP=true
- SERVICE_9090_CHECK_INITIAL_STATUS=passing
- SERVICE_9090_TAGS=${PROMETHEUS_SERVICE_9090_TAGS}
networks:
- private
- public
ports:
- 9090
restart: always
volumes:
- prometheus:/prometheus
volumes:
prometheus:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+1
View File
@@ -0,0 +1 @@
RABBITMQ_SERVICE_15672_TAGS=urlprefix-rabbitmq.${APP_DOMAIN}/
+35
View File
@@ -0,0 +1,35 @@
version: '3.6'
services:
rabbitmq:
image: rabbitmq:management-alpine
labels:
- SERVICE_4369_IGNORE=true
- SERVICE_5671_IGNORE=true
- SERVICE_5672_CHECK_TCP=true
- SERVICE_5672_NAME=${COMPOSE_SERVICE_NAME}-rabbitmq-5672
- SERVICE_15671_IGNORE=true
- SERVICE_15672_CHECK_HTTP=/
- SERVICE_15672_NAME=${COMPOSE_SERVICE_NAME}-rabbitmq-15672
- SERVICE_15672_TAGS=${RABBITMQ_SERVICE_15672_TAGS}
- SERVICE_25672_IGNORE=true
networks:
- private
- public
ports:
- 5672
- 15672
volumes:
- rabbitmq:/var/lib/rabbitmq
restart: always
volumes:
rabbitmq:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+29
View File
@@ -0,0 +1,29 @@
version: '3.6'
services:
redis:
depends_on:
- sysctl
image: redis:alpine
command: redis-server --appendonly yes
labels:
- SERVICE_6379_CHECK_TCP=true
- SERVICE_6379_NAME=${COMPOSE_SERVICE_NAME}-redis-6379
networks:
- private
ports:
- 6379
volumes:
- redis:/data
restart: always
volumes:
redis:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+33
View File
@@ -0,0 +1,33 @@
REDMINE_DB_HOST=mysql
REDMINE_DB_NAME=redmine
REDMINE_DB_PASS=redmine
REDMINE_DB_USER=redmine
REDMINE_IMAP_ENABLED=false
REDMINE_IMAP_HOST=imap.gmail.com
REDMINE_IMAP_INTERVAL=30
REDMINE_IMAP_USER=imap_user
REDMINE_IMAP_PASS=imap_pass
REDMINE_INCOMING_EMAIL_ALLOW_OVERRIDE=project,tracker,category,priority,status
REDMINE_INCOMING_EMAIL_PROJECT=incoming_email_project
REDMINE_FETCH_COMMITS=hourly
REDMINE_SECRET_TOKEN=redmine_secret_token
REDMINE_SERVICE_80_TAGS=urlprefix-redmine.${APP_DOMAIN}/
REDMINE_SMTP_DOMAIN=redmine_smtp_domain
REDMINE_SMTP_USER=redmine_smtp_user
REDMINE_SMTP_PASS=redmine_smtp_pass
REDMINE3_DB_HOST=mysql
REDMINE3_DB_NAME=redmine3
REDMINE3_DB_PASS=redmine
REDMINE3_DB_USER=redmine
REDMINE3_IMAP_ENABLED=false
REDMINE3_IMAP_HOST=imap.gmail.com
REDMINE3_IMAP_INTERVAL=30
REDMINE3_IMAP_USER=imap_user
REDMINE3_IMAP_PASS=imap_pass
REDMINE3_INCOMING_EMAIL_ALLOW_OVERRIDE=project,tracker,category,priority,status
REDMINE3_INCOMING_EMAIL_PROJECT=incoming_email_project
REDMINE3_REDMINE_SECRET_TOKEN=redmine_secret_token
REDMINE3_SERVICE_80_TAGS=urlprefix-redmine3.${APP_DOMAIN}/
REDMINE3_SMTP_DOMAIN=redmine_smtp_domain
REDMINE3_SMTP_USER=redmine_smtp_user
REDMINE3_SMTP_PASS=redmine_smtp_pass
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
redmine3:
image: sameersbn/redmine:3.4.12
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
redmine:
image: sameersbn/redmine:4.0.5
+5
View File
@@ -0,0 +1,5 @@
version: '3.6'
services:
redmine:
image: sameersbn/redmine:latest
+48
View File
@@ -0,0 +1,48 @@
version: '3.6'
services:
redmine:
environment:
- DB_ADAPTER=mysql2
- DB_HOST=${REDMINE_DB_HOST}
- DB_NAME=${REDMINE_DB_NAME}
- DB_USER=${REDMINE_DB_USER}
- DB_PASS=${REDMINE_DB_PASS}
- IMAP_ENABLED=${REDMINE_IMAP_ENABLED}
- IMAP_HOST=${REDMINE_IMAP_HOST}
- IMAP_INTERVAL=${REDMINE_IMAP_INTERVAL}
- IMAP_USER=${REDMINE_IMAP_USER}
- IMAP_PASS=${REDMINE_IMAP_PASS}
- INCOMING_EMAIL_PROJECT=${REDMINE_INCOMING_EMAIL_PROJECT}
- INCOMING_EMAIL_ALLOW_OVERRIDE=${REDMINE_INCOMING_EMAIL_ALLOW_OVERRIDE}
- REDMINE_FETCH_COMMITS=${REDMINE_FETCH_COMMITS}
- REDMINE_SECRET_TOKEN=${REDMINE_SECRET_TOKEN}
- SMTP_DOMAIN=${REDMINE_SMTP_DOMAIN}
- SMTP_USER=${REDMINE_SMTP_USER}
- SMTP_PASS=${REDMINE_SMTP_PASS}
- TZ=Europe/Paris
labels:
- SERVICE_80_NAME=${COMPOSE_SERVICE_NAME}-redmine-80
- SERVICE_80_CHECK_TCP=true
- SERVICE_80_CHECK_INITIAL_STATUS=passing
- SERVICE_80_TAGS=${REDMINE_SERVICE_80_TAGS}
- SERVICE_443_IGNORE=true
networks:
- private
- public
ports:
- 80
restart: always
volumes:
- redmine:/home/redmine/data
volumes:
redmine:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+41
View File
@@ -0,0 +1,41 @@
version: '3.6'
services:
redmine3:
image: sameersbn/redmine:3.4.12
environment:
- DB_ADAPTER=mysql2
- DB_HOST=${REDMINE3_DB_HOST}
- DB_NAME=${REDMINE3_DB_NAME}
- DB_USER=${REDMINE3_DB_USER}
- DB_PASS=${REDMINE3_DB_PASS}
- REDMINE_SECRET_TOKEN=${REDMINE3_REDMINE_SECRET_TOKEN}
- SMTP_DOMAIN=${REDMINE3_SMTP_DOMAIN}
- SMTP_USER=${REDMINE3_SMTP_USER}
- SMTP_PASS=${REDMINE3_SMTP_PASS}
- TZ=Europe/Paris
labels:
- SERVICE_80_NAME=${COMPOSE_SERVICE_NAME}-redmine3-80
- SERVICE_80_CHECK_TCP=true
- SERVICE_80_CHECK_INITIAL_STATUS=passing
- SERVICE_80_TAGS=${REDMINE3_SERVICE_80_TAGS}
- SERVICE_443_IGNORE=true
networks:
- private
- public
ports:
- 80
restart: always
volumes:
- redmine3:/home/redmine/data
volumes:
redmine3:
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}
+31
View File
@@ -0,0 +1,31 @@
version: '3.6'
services:
logagent:
build:
args:
- DOCKER_BUILD_DIR=docker/sematext/logagent
- GIT_AUTHOR_NAME=${GIT_AUTHOR_NAME}
- GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL}
- UID=${UID}
- USER=${USER}
context: ../..
dockerfile: docker/sematext/logagent/Dockerfile
target: ${DOCKER_BUILD_TARGET}
image: ${DOCKER_REPOSITORY}/logagent:${DOCKER_IMAGE_TAG}
environment:
- LOGAGENT_ARGS=-u 514 --docker /tmp/docker.sock --dockerEvents
- LOGS_RECEIVER_URL=${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}
- LOGS_TOKEN=logs-YYYY.MM.DD
networks:
- private
ports:
- 514
restart: always
volumes:
- /var/run/docker.sock:/tmp/docker.sock
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
+2
View File
@@ -0,0 +1,2 @@
services ?= elastic memcached mysql rabbitmq redis
services: stack-services-up;
+1
View File
@@ -0,0 +1 @@
testing ?= drone/drone drone/drone-runner-docker drone/gc
+6
View File
@@ -0,0 +1,6 @@
RC_ATTACH_SCREEN=false
RC_ATTACH_TMUX=false
RC_CUSTOM_PROMPT=false
RC_CUSTOM_PS1=true
RC_SSH_AGENT=false
THEIA_SERVICE_3000_TAGS=urlprefix-theia.${USER}.${APP_DOMAIN}/
+63
View File
@@ -0,0 +1,63 @@
version: '3.6'
services:
theia:
build:
args:
- DOCKER_BUILD_DIR=docker/theia
- DOCKER_GID=${DOCKER_GID}
- GIT_AUTHOR_NAME=${GIT_AUTHOR_NAME}
- GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL}
- SSH_BASTION_USERNAME=${SSH_BASTION_USERNAME}
- SSH_BASTION_HOSTNAME=${SSH_BASTION_HOSTNAME}
- SSH_PUBLIC_HOST_KEYS=${SSH_PUBLIC_HOST_KEYS}
- SSH_PRIVATE_IP_RANGE=${SSH_PRIVATE_IP_RANGE}
- UID=${UID}
- USER=${USER}
context: ../..
dockerfile: docker/theia/Dockerfile
target: ${DOCKER_BUILD_TARGET}
environment:
- ENV=${ENV}
- MONOREPO_DIR=${MONOREPO_DIR}
- RC_01_CUSTOM_PS1=${RC_CUSTOM_PS1}
- RC_02_CUSTOM_PROMPT=${RC_CUSTOM_PROMPT}
- RC_03_SSH_AGENT=${RC_SSH_AGENT}
- RC_04_ATTACH_TMUX=${RC_ATTACH_TMUX}
- RC_05_ATTACH_SCREEN=${RC_ATTACH_SCREEN}
- SHELL=${DOCKER_SHELL}
- SSH_AUTH_SOCK=/tmp/ssh-agent/socket
- WORKSPACE_DIR=/Sources/${MONOREPO}
image: ${DOCKER_REPOSITORY}/theia:${DOCKER_IMAGE_TAG}
labels:
- SERVICE_3000_NAME=${COMPOSE_SERVICE_NAME}-theia-3000
- SERVICE_3000_CHECK_TCP=true
- SERVICE_3000_CHECK_INITIAL_STATUS=passing
- SERVICE_3000_TAGS=${THEIA_SERVICE_3000_TAGS}
networks:
- private
- public
restart: always
volumes:
- monorepo:/Sources/${MONOREPO}:cached
- ssh-agent:/tmp/ssh-agent:ro
- /var/run/docker.sock:/var/run/docker.sock
volumes:
monorepo:
driver: local
driver_opts:
type: none
device: ${MONOREPO_DIR}
o: bind
ssh-agent:
external:
name: ${DOCKER_VOLUME_SSH}
networks:
private:
external: true
name: ${DOCKER_NETWORK_PRIVATE}
public:
external: true
name: ${DOCKER_NETWORK_PUBLIC}