Cleaned up all compose files

cleaned up all the files.
they should now all work for multiple projects.
This commit is contained in:
2020-04-16 21:13:59 -07:00
parent c2dd16ebeb
commit 206ed58eb9
28 changed files with 446 additions and 106 deletions
+1
View File
@@ -1 +1,2 @@
# Try and prevent passwords:
.env .env
+22 -1
View File
@@ -1 +1,22 @@
# docker-compose-cookbooks # Nick Yeoman's Collection of Docker compose files
Checkout [https://www.nickyeoman.com/](https://www.nickyeoman.com/) to learn more.
With the exception of traefik and portainer the process is pretty much the same.
The idea is to run all these services off of one host and they are setup so
you can run multiple versions of any software just by changing the .env file
The process is:
1. cd ~/Git/docker-cookbooks/app-you-want-to-use
1. cp env-sample .env
1. vi .env
1. PREFIX in .env should the project_name (for example nick_yeoman or ny)
1. docker-compose -p project_name up -d
To create multiple projects is a little bit more tricky as you have to
define new directories for the .env file.
To do this I've just been copying the app folder to a domain-name folder.
Which isn't ideal, but I don't know how to do this more elegantly.
+1 -2
View File
@@ -1,5 +1,6 @@
################################################################################ ################################################################################
# use like this: python3 run.py > test.sql # use like this: python3 run.py > test.sql
# TODO: you need to change the last comma to a semi colon for it to work in mysql
################################################################################ ################################################################################
import os import os
@@ -44,5 +45,3 @@ for filename in os.listdir(directory):
continue continue
else: else:
continue continue
# TODO: you need to change the last comma to a semi colon for it to work in mysql
+11 -21
View File
@@ -1,11 +1,14 @@
################################################################################ ################################################################################
# Bookstack
# make sure you use the $PREFIX from .env for project_name # make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d # docker-compose -p project_name up -d
# #
# If you are importing directly using the db you have to do the following in the container: # Importing directly to the db (phpmydadmin)
# you have to run the following in the container:
# php artisan bookstack:regenerate-permissions # php artisan bookstack:regenerate-permissions
#
# Version 1
################################################################################ ################################################################################
version: '2' version: '2'
volumes: volumes:
@@ -16,41 +19,28 @@ volumes:
networks: networks:
traefik_web: traefik_web:
external: external:
name: traefik_web name: ${NETWORK_NAME}
services: services:
bookstack-db: bookstack-db:
image: mariadb:10.4.11 image: mariadb:${DB_V}
restart: always restart: always
volumes: volumes:
- bookstack-db:/var/lib/mysql - bookstack-db:/var/lib/mysql
networks: networks:
- traefik_web - ${NETWORK_NAME}
environment: environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: bookstack MYSQL_USER: bookstack
MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: bookstack MYSQL_DATABASE: bookstack
# It's only exposed if someone knows the ip
bookstack-phpdb:
#https://hub.docker.com/r/phpmyadmin/phpmyadmin/tags
image: phpmyadmin/phpmyadmin:5.0
environment:
- PMA_ARBITRARY=1
external_links:
- bookstack-db
depends_on:
- bookstack-db
networks:
- traefik_web
# https://hub.docker.com/r/solidnerd/bookstack # https://hub.docker.com/r/solidnerd/bookstack
bookstack: bookstack:
image: solidnerd/bookstack:0.29.0 image: solidnerd/bookstack:${BOOKSTACK_V}
depends_on: depends_on:
- bookstack-db - bookstack-db
environment: environment:
- DB_HOST=${PREFIX}_bookstack-db_1:3306 - DB_HOST=${PREFIX}_bookstack-db_1:3306
- DB_DATABASE=bookstack - DB_DATABASE=bookstack
@@ -58,7 +48,7 @@ services:
- DB_PASSWORD=${MYSQL_PASSWORD} - DB_PASSWORD=${MYSQL_PASSWORD}
- APP_URL=https://${DOMAIN_NAME} - APP_URL=https://${DOMAIN_NAME}
networks: networks:
- traefik_web - ${NETWORK_NAME}
volumes: volumes:
- bookstack-uploads:/var/www/bookstack/public/uploads - bookstack-uploads:/var/www/bookstack/public/uploads
- bookstack-storage:/var/www/bookstack/storage/uploads - bookstack-storage:/var/www/bookstack/storage/uploads
+12 -2
View File
@@ -1,4 +1,14 @@
# Domains & Project
PREFIX=p1
DOMAIN_NAME=bookstack.nickyeoman.com
# Passwords
MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass! MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
MYSQL_PASSWORD=Again2ASecurepass! MYSQL_PASSWORD=Again2ASecurepass!
DOMAIN_NAME=bookstack.nickyeoman.com
PREFIX=p1 # Software versions
DB_V=10.4.11
BOOKSTACK_V=0.29.0
# Network
NETWORK_NAME=traefik_web
+24
View File
@@ -0,0 +1,24 @@
#!/bin/bash
# Docker clean up guilde https://gist.github.com/bastman/5b57ddb3c11942094f8d0a97d461b430
# kill all containers
docker stop $(docker ps -aq)
docker system prune
#remove all containers
#docker rm $(docker ps -aq)
#remove all images
#docker rmi $(docker images -q)
#delete all volumnes
#docker volume rm $(docker volume ls -qf dangling=true)
#docker volume ls -qf dangling=true | xargs -r docker volume rm
#remove all networks
docker network prune
#docker network ls
#docker network ls | grep "bridge"
#docker network rm $(docker network ls | grep "bridge" | awk '/ / { print $1 }')
+21 -10
View File
@@ -1,3 +1,14 @@
################################################################################
# Gitea
# make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d
#
# Importing directly to the db (phpmydadmin)
# you have to run the following in the container:
# php artisan bookstack:regenerate-permissions
#
# Version 1
################################################################################
version: '3.3' version: '3.3'
volumes: volumes:
@@ -6,14 +17,15 @@ volumes:
networks: networks:
traefik_web: traefik_web:
external: external:
name: traefik_web name: ${NETWORK_NAME}
services: services:
gitea: gitea:
image: gitea/gitea:latest # https://hub.docker.com/r/gitea/gitea
networks: image: gitea/gitea:${GITEA_V}
- traefik_web networks:
- ${NETWORK_NAME}
environment: environment:
- USER_UID=1000 - USER_UID=1000
- USER_GID=1000 - USER_GID=1000
@@ -23,11 +35,10 @@ services:
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
ports: ports:
- "222:22" - "${GITEA_PORT}:22"
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`gitea.nickyeoman.com`)" - "traefik.http.routers.${PREFIX}_gitea.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.gitea.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls=true" - "traefik.http.routers.${PREFIX}_gitea.tls=true"
- "traefik.http.services.gite.loadbalancer.server.port=3000" - "traefik.http.services.${PREFIX}_gitea.loadbalancer.server.port=3000"
+10
View File
@@ -0,0 +1,10 @@
# Domains & Project
PREFIX=p1
DOMAIN_NAME=gitea.nickyeoman.com
# Software versions
GITEA_V=1.11.4
GITEA_PORT=22
# Network
NETWORK_NAME=traefik_web
+8 -5
View File
@@ -1,7 +1,10 @@
################################################################################ ################################################################################
# Joomla
# Update the .env file # Update the .env file
# make sure you use the $PREFIX from .env for project_name # make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d # docker-compose -p project_name up -d
#
# Version 1
################################################################################ ################################################################################
version: '3.3' version: '3.3'
@@ -12,17 +15,17 @@ volumes:
networks: networks:
traefik_web: traefik_web:
external: external:
name: traefik_web name: ${NETWORK_NAME}
services: services:
mariadb: mariadb:
image: mariadb:10.4.11 image: mariadb:${JOOMLADB_V}
restart: always restart: always
volumes: volumes:
- mariadb:/var/lib/mysql - mariadb:/var/lib/mysql
networks: networks:
- traefik_web - ${NETWORK_NAME}
environment: environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: joomla MYSQL_USER: joomla
@@ -30,12 +33,12 @@ services:
MYSQL_DATABASE: joomla MYSQL_DATABASE: joomla
joomla: joomla:
image: joomla:3.9.16-apache image: joomla:${JOOMLA_V}
restart: always restart: always
links: links:
- ${PREFIX}_mariadb_1 - ${PREFIX}_mariadb_1
networks: networks:
- traefik_web - ${NETWORK_NAME}
volumes: volumes:
- joomla:/var/www/html - joomla:/var/www/html
labels: labels:
+11 -2
View File
@@ -1,5 +1,14 @@
# Rename this file to .env # Domains & Project
PREFIX=p1
DOMAIN_NAME=joomla.nickyeoman.com DOMAIN_NAME=joomla.nickyeoman.com
PREFIX=project_name
# PASSWORDS
MYSQL_PASSWORD=MyNotSecurePassword1234 MYSQL_PASSWORD=MyNotSecurePassword1234
MYSQL_ROOT_PASSWORD=AlsoNotSecure MYSQL_ROOT_PASSWORD=AlsoNotSecure
# Software versions
JOOMLA_V=3.9.16-apache
JOOMLADB_V=10.4.11
# Network
NETWORK_NAME=traefik_web
+18 -11
View File
@@ -1,3 +1,10 @@
################################################################################
# Nextcloud
# make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d
#
# Version 1
################################################################################
version: '3.3' version: '3.3'
volumes: volumes:
@@ -9,17 +16,17 @@ volumes:
networks: networks:
traefik_web: traefik_web:
external: external:
name: traefik_web name: ${NETWORK_NAME}
services: services:
mariadb: mariadb:
image: mariadb:10.4.11 image: mariadb:${DB_V}
restart: always restart: always
volumes: volumes:
- mariadb:/var/lib/mysql - mariadb:/var/lib/mysql
networks: networks:
- traefik_web - ${NETWORK_NAME}
environment: environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: nextcloud MYSQL_USER: nextcloud
@@ -27,21 +34,21 @@ services:
MYSQL_DATABASE: nextcloud MYSQL_DATABASE: nextcloud
nextcloud: nextcloud:
image: nextcloud:18.0.3-apache image: nextcloud:${NEXTCLOUD_V}
stdin_open: true stdin_open: true
tty: true tty: true
networks: networks:
- traefik_web - ${NETWORK_NAME}
restart: always restart: always
depends_on: depends_on:
- mariadb - ${PREFIX}_mariadb_1
links: links:
- mariadb - ${PREFIX}_mariadb_1
volumes: volumes:
- nextcloud:/var/www/html - nextcloud:/var/www/html
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`${DOMAIN_NAME}`)" - "traefik.http.routers.${PREFIX}_nextcloud.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.nextcloud.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.tls=true" - "traefik.http.routers.${PREFIX}_nextcloud.tls=true"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80" - "traefik.http.services.${PREFIX}_nextcloud.loadbalancer.server.port=80"
+14 -3
View File
@@ -1,4 +1,15 @@
# Rename this file to .env # Domains & Project
PREFIX=p1
DOMAIN_NAME=nextcloud.nickyeoman.com DOMAIN_NAME=nextcloud.nickyeoman.com
MYSQL_PASSWORD=MyNotSecurePassword1234 PHPDB_DOMAIN_NAME=bookstack-db.nickyeoman.com
MYSQL_ROOT_PASSWORD=AlsoNotSecure
# Passwords
MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
MYSQL_PASSWORD=Again2ASecurepass!
# Software versions
DB_V=10.4.11
NEXTCLOUD_V=18.0.3-apache
# Network
NETWORK_NAME=traefik_web
+25 -22
View File
@@ -1,57 +1,60 @@
################################################################################
# Passbolt
# make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d
#
# Version 1
################################################################################
version: '3.3' version: '3.3'
volumes: volumes:
pb-mariadb: pb-mariadb:
pb-gpg_volume: pb-gpg:
pb-images_volume: pb-images:
networks: networks:
traefik_web: traefik_web:
external: external:
name: traefik_web name: ${NETWORK_NAME}
services: services:
pb-mariadb: pb-mariadb:
image: mariadb:10.4.11 image: mariadb:${DB_V}
container_name: pb-mariadb
hostname: pb-mariadb
restart: always restart: always
volumes: volumes:
- pb-mariadb:/var/lib/mysql - pb-mariadb:/var/lib/mysql
networks: networks:
- traefik_web - ${NETWORK_NAME}
environment: environment:
MYSQL_ROOT_PASSWORD: thasdfisIsRoot29837! MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_PASSWORD: p@ssblt!!1NOW MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: db_passbolt MYSQL_DATABASE: passbolt
MYSQL_USER: passbolt MYSQL_USER: passbolt
# https://help.passbolt.com/hosting/install/ce/docker.html # https://help.passbolt.com/hosting/install/ce/docker.html
# once it's running you will have to manually create your first user: # once it's running you will have to manually create your first user:
# as www-data user: ./cake passbolt register_user -u <email> -f <firstname> -l <lastname> -r admin # as www-data user: ./cake passbolt register_user -u <email> -f <firstname> -l <lastname> -r admin
passbolt: passbolt:
image: passbolt/passbolt:2.12.0-debian image: passbolt/passbolt:${PASSBOLT_V}
container_name: pb-passbolt
hostname: passbolt
networks: networks:
- traefik_web - ${NETWORK_NAME}
restart: always restart: always
tty: true tty: true
tmpfs: tmpfs:
- /run - /run
depends_on: depends_on:
- pb-mariadb - ${PREFIX}_pb-mariadb_1
env_file: env_file:
- passbolt.env - passbolt.env
command: ["/usr/bin/wait-for.sh", "-t", "0", "pb-mariadb:3306", "--", "/docker-entrypoint.sh"] command: ["/usr/bin/wait-for.sh", "-t", "0", "${PREFIX}_pb-mariadb_1:3306", "--", "/docker-entrypoint.sh"]
volumes: volumes:
- pb-gpg_volume:/var/www/passbolt/config/gpg - pb-gpg:/var/www/passbolt/config/gpg
- pb-images_volume:/var/www/passbolt/webroot/img/public - pb-images:/var/www/passbolt/webroot/img/public
- ./license:/var/www/passbolt/config/license - ./license:/var/www/passbolt/config/license
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.passbolt.rule=Host(`passbolt.nickyeoman.com`)" - "traefik.http.routers.${PREFIX}_passbolt.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.passbolt.entrypoints=websecure" - "traefik.http.routers.${PREFIX}_passbolt.entrypoints=websecure"
- "traefik.http.routers.passbolt.tls=true" - "traefik.http.routers.${PREFIX}_passbolt.tls=true"
- "traefik.http.services.passbolt.loadbalancer.server.port=80" - "traefik.http.services.${PREFIX}_passbolt.loadbalancer.server.port=80"
+14
View File
@@ -0,0 +1,14 @@
# Domains & Project
PREFIX=p1
DOMAIN_NAME=passbolt.nickyeoman.com
# Passwords
MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
MYSQL_PASSWORD=Again2ASecurepass!
# Software versions
DB_V=10.4.11
PASSBOLT_V=2.12.0-debian
# Network
NETWORK_NAME=traefik_web
+2
View File
@@ -1,3 +1,5 @@
#TODO: I'm not sure if this is still in use or has been implemented, test further.
# URL # URL
APP_FULL_BASE_URL=https://passbolt.nickyeoman.com APP_FULL_BASE_URL=https://passbolt.nickyeoman.com
+31
View File
@@ -0,0 +1,31 @@
################################################################################
# phpmyadmin
# make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d
#
# Version 1
################################################################################
version: '2'
networks:
traefik_web:
external:
name: ${NETWORK_NAME}
services:
# It's only exposed if someone knows the ip
phpmyadmin:
#https://hub.docker.com/r/phpmyadmin/phpmyadmin/tags
image: phpmyadmin/phpmyadmin:${PHPMYADMIN_V}
environment:
- PMA_ARBITRARY=1
restart: unless-stopped
networks:
- ${NETWORK_NAME}
labels:
- "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_phpmyadmin.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_phpmyadmin.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_phpmyadmin.tls=true"
- "traefik.http.services.${PREFIX}_phpmyadmin.loadbalancer.server.port=80"
+9
View File
@@ -0,0 +1,9 @@
# Domains & Project
PREFIX=p1
DOMAIN_NAME=phpmyadmin.nickyeoman.com
# Software versions
PHPMYADMIN_V=5.0
# Network
NETWORK_NAME=traefik_web
+15 -5
View File
@@ -1,3 +1,12 @@
################################################################################
# Portainer
# You should only need one instance of this running
# Change .env then
# docker-compose up -d
#
# Version 1
################################################################################
version: '3.3' version: '3.3'
volumes: volumes:
@@ -6,25 +15,26 @@ volumes:
networks: networks:
traefik_web: traefik_web:
external: external:
name: traefik_web name: ${NETWORK_NAME}
services: services:
portainer: portainer:
image: portainer/portainer # https://hub.docker.com/r/portainer/portainer
image: portainer/portainer:${PORTAINER_V}
container_name: portainer container_name: portainer
hostname: portainer hostname: portainer
command: -H unix:///var/run/docker.sock command: -H unix:///var/run/docker.sock
restart: always restart: unless-stopped
networks: networks:
- traefik_web - ${NETWORK_NAME}
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- portainer:/data - portainer:/data
command: -H unix:///var/run/docker.sock command: -H unix:///var/run/docker.sock
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.portainer.rule=Host(`portainer.nickyeoman.com`)" - "traefik.http.routers.portainer.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.portainer.entrypoints=websecure" - "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.tls=true" - "traefik.http.routers.portainer.tls=true"
- "traefik.http.services.portainer.loadbalancer.server.port=9000" - "traefik.http.services.portainer.loadbalancer.server.port=9000"
+8
View File
@@ -0,0 +1,8 @@
# Domains & Project
DOMAIN_NAME=passbolt.nickyeoman.com
# Software versions
PORTAINER_V=1.23.2
# Network
NETWORK_NAME=traefik_web
+17 -12
View File
@@ -1,13 +1,16 @@
###############################################################################
# Rocket Chat
# Update the .env file # Update the .env file
# make sure you use the $PREFIX from .env for project_name # make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d # docker-compose -p project_name up -d
###############################################################################
version: '2' version: '2'
networks: networks:
traefik_web: traefik_web:
external: external:
name: traefik_web name: ${NETWORK_NAME}
volumes: volumes:
rocketchat: rocketchat:
@@ -16,8 +19,10 @@ volumes:
rocketchat-scripts: rocketchat-scripts:
services: services:
rocketchat: rocketchat:
image: rocketchat/rocket.chat:latest # https://hub.docker.com/r/rocketchat/rocket.chat
image: rocketchat/rocket.chat:${ROCKETCHAT_V}
command: > command: >
bash -c bash -c
"for i in `seq 1 30`; do "for i in `seq 1 30`; do
@@ -30,17 +35,17 @@ services:
volumes: volumes:
- rocketchat:/app/uploads - rocketchat:/app/uploads
networks: networks:
- traefik_web - ${NETWORK_NAME}
environment: environment:
- PORT=3000 - PORT=3000
- ROOT_URL=http://chat.nickyeoman.com - ROOT_URL=https://${DOMAIN_NAME}
- MONGO_URL=mongodb://mongo:27017/rocketchat - MONGO_URL=mongodb://${PREFIX}_rc-db_1:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local - MONGO_OPLOG_URL=mongodb://${PREFIX}_rc-db_1:27017/local
- MAIL_URL=smtp://smtp.email - MAIL_URL=smtp://smtp.email
# - HTTP_PROXY=http://proxy.domain.com # - HTTP_PROXY=http://proxy.domain.com
# - HTTPS_PROXY=http://proxy.domain.com # - HTTPS_PROXY=http://proxy.domain.com
depends_on: depends_on:
- mongo - rc-db
ports: ports:
- 3000:3000 - 3000:3000
labels: labels:
@@ -50,14 +55,14 @@ services:
- "traefik.http.routers.${PREFIX}_chat.tls=true" - "traefik.http.routers.${PREFIX}_chat.tls=true"
- "traefik.http.services.${PREFIX}_chat.loadbalancer.server.port=3000" - "traefik.http.services.${PREFIX}_chat.loadbalancer.server.port=3000"
mongo: rc-db:
image: mongo:4.0 image: mongo:4.0
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- rocketchat-db:/data/db - rocketchat-db:/data/db
#- ./data/dump:/dump #- ./data/dump:/dump
networks: networks:
- traefik_web - ${NETWORK_NAME}
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
labels: labels:
- "traefik.enable=false" - "traefik.enable=false"
@@ -78,9 +83,9 @@ services:
sleep 5; sleep 5;
done; (exit $$s)" done; (exit $$s)"
depends_on: depends_on:
- mongo - ${PREFIX}_rc-db_1
networks: networks:
- traefik_web - ${NETWORK_NAME}
# hubot, the popular chatbot (add the bot user first and change the password before starting this image) # hubot, the popular chatbot (add the bot user first and change the password before starting this image)
hubot: hubot:
@@ -101,7 +106,7 @@ services:
volumes: volumes:
- rocketchat-scripts:/home/hubot/scripts - rocketchat-scripts:/home/hubot/scripts
networks: networks:
- traefik_web - ${NETWORK_NAME}
# this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier # this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier
ports: ports:
- 3001:8080 - 3001:8080
+10 -2
View File
@@ -1,5 +1,13 @@
# Rename this file to .env # Domains & Project
PREFIX=p1
DOMAIN_NAME=joomla.nickyeoman.com DOMAIN_NAME=joomla.nickyeoman.com
PREFIX=project_name
# Passwords
MYSQL_PASSWORD=MyNotSecurePassword1234 MYSQL_PASSWORD=MyNotSecurePassword1234
MYSQL_ROOT_PASSWORD=AlsoNotSecure MYSQL_ROOT_PASSWORD=AlsoNotSecure
# Software versions
ROCKETCHAT_V=3.1.1
# Network
NETWORK_NAME=traefik_web
+1
View File
@@ -0,0 +1 @@
#not sure what to put here
+57
View File
@@ -0,0 +1,57 @@
################################################################################
# Stash
# make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d
#
# Version 1
################################################################################
version: '3.4'
volumes:
stash:
stash-metadata:
stash-cache:
stash-generated:
networks:
traefik_web:
external:
name: ${NETWORK_NAME}
services:
stash:
# https://hub.docker.com/r/stashapp/stash
image: stashapp/stash:latest
restart: unless-stopped
logging:
driver: "json-file"
options:
max-file: "10"
max-size: "2m"
environment:
- STASH_STASH=/data/
- STASH_GENERATED=/generated/
- STASH_METADATA=/metadata/
- STASH_CACHE=/cache/
networks:
- ${NETWORK_NAME}
volumes:
- /etc/localtime:/etc/localtime:ro
## Adjust below paths (the left part) to your liking.
## E.g. you can change ./config:/root/.stash to ./stash:/root/.stash
## Keep configs here.
#- ./config:/root/.stash
## Point this at your collection.
- stash:/data
## This is where your stash's metadata lives
- stash-metadata:/metadata
## Any other cache content.
- stash-cache:/cache
## Where to store generated content (screenshots,previews,transcodes,sprites)
- stash-generated:/generated
labels:
- "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_stash.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_stash.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_stash.tls=true"
- "traefik.http.services.${PREFIX}_stash.loadbalancer.server.port=9999"
+6
View File
@@ -0,0 +1,6 @@
# Domain and project
DOMAIN_NAME=stash.nickyeoman.com
PREFIX=p1
# Network
NETWORK_NAME=traefik_web
+10 -8
View File
@@ -1,17 +1,21 @@
############################################################################### ###############################################################################
# Traefik
#
# Should only need one instance of this.
# Make sure the .env file is updated
# docker-compose up -d # docker-compose up -d
############################################################################### ###############################################################################
version: '3.3' version: '3.3'
networks: networks:
web: ${NETWORK_NAME}:
driver: bridge driver: bridge
services: services:
traefik: traefik:
image: "traefik:v2.1.3" # https://hub.docker.com/_/traefik
image: "traefik:${TRAEFIK_V}"
container_name: "traefik" container_name: "traefik"
restart: unless-stopped restart: unless-stopped
command: command:
@@ -25,17 +29,15 @@ services:
volumes: volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro" - "/var/run/docker.sock:/var/run/docker.sock:ro"
networks: networks:
- web - ${NETWORK_NAME}
labels: labels:
# Dashboard # Dashboard
- "traefik.http.routers.traefik.rule=Host(`proxy.nickyeoman.com`)" - "traefik.http.routers.traefik.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.traefik.service=api@internal" - "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls.certresolver=leresolver" - "traefik.http.routers.traefik.tls.certresolver=leresolver"
- "traefik.http.routers.traefik.entrypoints=websecure" - "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.middlewares=authtraefik" - "traefik.http.routers.traefik.middlewares=authtraefik"
# https://medium.com/@techupbusiness/add-basic-authentication-in-docker-compose-files-with-traefik-34c781234970 - "traefik.http.middlewares.authtraefik.basicauth.users=${TRAEFIK_USER}:${TRAEFIK_PASS}"
# echo $(htpasswd -nbB <USER> "<PASS>") | sed -e s/\\$/\\$\\$/g
- "traefik.http.middlewares.authtraefik.basicauth.users=nick:encryptedpasswordgoeshere"
# global redirect to https # global redirect to https
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)" - "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web" - "traefik.http.routers.http-catchall.entrypoints=web"
+16
View File
@@ -0,0 +1,16 @@
# Domains & Project
PREFIX=p1
DOMAIN_NAME=traefik.nickyeoman.com
# Passwords
# https://medium.com/@techupbusiness/add-basic-authentication-in-docker-compose-files-with-traefik-34c781234970
# echo $(htpasswd -nbB <USER> "<PASS>") | sed -e s/\\$/\\$\\$/g
TRAEFIK_USER=username
TRAEFIK_PASS=M@keASecureOne
# Software versions
# https://hub.docker.com/_/traefik
TRAEFIK_V=2.2.0
# Network
NETWORK_NAME=traefik_web
+57
View File
@@ -0,0 +1,57 @@
################################################################################
# yourls
# make sure you use the $PREFIX from .env for project_name
# docker-compose -p project_name up -d
#
#
# Version 1
################################################################################
version: '3.1'
volumes:
yourls:
yourls-db:
networks:
traefik_web:
external:
name: ${NETWORK_NAME}
services:
yourls-db:
# https://hub.docker.com/_/mariadb/
image: mariadb:${DB_V}
restart: always
volumes:
- yourls-mariadb:/var/lib/mysql
networks:
- ${NETWORK_NAME}
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: yourls
MYSQL_USER: yourls
yourls:
# reference: https://github.com/matomo-org/docker/blob/master/.examples/docker-compose.yml
image: yourls
restart: always
volumes:
- yourls:/var/www/html
networks:
- ${NETWORK_NAME}
environment:
YOURLS_DB_HOST: ${PREFIX}_yourls-db_1
YOURLS_DB_USER: yourls
YOURLS_DB_PASS: ${MYSQL_PASSWORD}
YOURLS_DB_NAME: yourls
YOURLS_SITE: https://${DOMAIN_NAME}
YOURLS_USER: ${YOURLS_USER}
YOURLS_PASS: ${YOURLS_PASS}
labels:
- "traefik.enable=true"
- "traefik.http.routers.${PREFIX}_yourls.rule=Host(`${DOMAIN_NAME}`)"
- "traefik.http.routers.${PREFIX}_yourls.entrypoints=websecure"
- "traefik.http.routers.${PREFIX}_yourls.tls=true"
- "traefik.http.services.${PREFIX}_yourls.loadbalancer.server.port=80"
+15
View File
@@ -0,0 +1,15 @@
# Domains & Project
PREFIX=p1
DOMAIN_NAME=yourls.nickyeoman.com
# Passwords
MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
MYSQL_PASSWORD=Again2ASecurepass!
YOURLS_USER=username
YOURLS_PASS=Password4urls
# Software versions
DB_V=10.4.11
# Network
NETWORK_NAME=traefik_web