mirror of
https://github.com/nickyeoman/docker-compose-cookbooks.git
synced 2026-09-04 02:46:23 +00:00
Cleaned up all compose files
cleaned up all the files. they should now all work for multiple projects.
This commit is contained in:
@@ -1 +1,2 @@
|
||||
# Try and prevent passwords:
|
||||
.env
|
||||
|
||||
@@ -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,5 +1,6 @@
|
||||
################################################################################
|
||||
# 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
|
||||
@@ -44,5 +45,3 @@ for filename in os.listdir(directory):
|
||||
continue
|
||||
else:
|
||||
continue
|
||||
|
||||
# TODO: you need to change the last comma to a semi colon for it to work in mysql
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
################################################################################
|
||||
# Bookstack
|
||||
# make sure you use the $PREFIX from .env for project_name
|
||||
# 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
|
||||
#
|
||||
# Version 1
|
||||
################################################################################
|
||||
|
||||
version: '2'
|
||||
|
||||
volumes:
|
||||
@@ -16,41 +19,28 @@ volumes:
|
||||
networks:
|
||||
traefik_web:
|
||||
external:
|
||||
name: traefik_web
|
||||
name: ${NETWORK_NAME}
|
||||
|
||||
services:
|
||||
|
||||
bookstack-db:
|
||||
image: mariadb:10.4.11
|
||||
image: mariadb:${DB_V}
|
||||
restart: always
|
||||
volumes:
|
||||
- bookstack-db:/var/lib/mysql
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_USER: bookstack
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
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
|
||||
bookstack:
|
||||
image: solidnerd/bookstack:0.29.0
|
||||
image: solidnerd/bookstack:${BOOKSTACK_V}
|
||||
depends_on:
|
||||
- bookstack-db
|
||||
- bookstack-db
|
||||
environment:
|
||||
- DB_HOST=${PREFIX}_bookstack-db_1:3306
|
||||
- DB_DATABASE=bookstack
|
||||
@@ -58,7 +48,7 @@ services:
|
||||
- DB_PASSWORD=${MYSQL_PASSWORD}
|
||||
- APP_URL=https://${DOMAIN_NAME}
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
volumes:
|
||||
- bookstack-uploads:/var/www/bookstack/public/uploads
|
||||
- bookstack-storage:/var/www/bookstack/storage/uploads
|
||||
|
||||
+12
-2
@@ -1,4 +1,14 @@
|
||||
# Domains & Project
|
||||
PREFIX=p1
|
||||
DOMAIN_NAME=bookstack.nickyeoman.com
|
||||
|
||||
# Passwords
|
||||
MYSQL_ROOT_PASSWORD=ChangeMe2ASecurepass!
|
||||
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
|
||||
|
||||
@@ -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 }')
|
||||
@@ -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'
|
||||
|
||||
volumes:
|
||||
@@ -6,14 +17,15 @@ volumes:
|
||||
networks:
|
||||
traefik_web:
|
||||
external:
|
||||
name: traefik_web
|
||||
name: ${NETWORK_NAME}
|
||||
|
||||
services:
|
||||
|
||||
gitea:
|
||||
image: gitea/gitea:latest
|
||||
# https://hub.docker.com/r/gitea/gitea
|
||||
image: gitea/gitea:${GITEA_V}
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
@@ -23,11 +35,10 @@ services:
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "222:22"
|
||||
- "${GITEA_PORT}:22"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.gitea.rule=Host(`gitea.nickyeoman.com`)"
|
||||
- "traefik.http.routers.gitea.entrypoints=websecure"
|
||||
- "traefik.http.routers.gitea.tls=true"
|
||||
- "traefik.http.services.gite.loadbalancer.server.port=3000"
|
||||
|
||||
- "traefik.http.routers.${PREFIX}_gitea.rule=Host(`${DOMAIN_NAME}`)"
|
||||
- "traefik.http.routers.${PREFIX}_gitea.entrypoints=websecure"
|
||||
- "traefik.http.routers.${PREFIX}_gitea.tls=true"
|
||||
- "traefik.http.services.${PREFIX}_gitea.loadbalancer.server.port=3000"
|
||||
|
||||
@@ -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
|
||||
@@ -1,7 +1,10 @@
|
||||
################################################################################
|
||||
# Joomla
|
||||
# Update the .env file
|
||||
# make sure you use the $PREFIX from .env for project_name
|
||||
# docker-compose -p project_name up -d
|
||||
#
|
||||
# Version 1
|
||||
################################################################################
|
||||
version: '3.3'
|
||||
|
||||
@@ -12,17 +15,17 @@ volumes:
|
||||
networks:
|
||||
traefik_web:
|
||||
external:
|
||||
name: traefik_web
|
||||
name: ${NETWORK_NAME}
|
||||
|
||||
services:
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.4.11
|
||||
image: mariadb:${JOOMLADB_V}
|
||||
restart: always
|
||||
volumes:
|
||||
- mariadb:/var/lib/mysql
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_USER: joomla
|
||||
@@ -30,12 +33,12 @@ services:
|
||||
MYSQL_DATABASE: joomla
|
||||
|
||||
joomla:
|
||||
image: joomla:3.9.16-apache
|
||||
image: joomla:${JOOMLA_V}
|
||||
restart: always
|
||||
links:
|
||||
- ${PREFIX}_mariadb_1
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
volumes:
|
||||
- joomla:/var/www/html
|
||||
labels:
|
||||
|
||||
+11
-2
@@ -1,5 +1,14 @@
|
||||
# Rename this file to .env
|
||||
# Domains & Project
|
||||
PREFIX=p1
|
||||
DOMAIN_NAME=joomla.nickyeoman.com
|
||||
PREFIX=project_name
|
||||
|
||||
# PASSWORDS
|
||||
MYSQL_PASSWORD=MyNotSecurePassword1234
|
||||
MYSQL_ROOT_PASSWORD=AlsoNotSecure
|
||||
|
||||
# Software versions
|
||||
JOOMLA_V=3.9.16-apache
|
||||
JOOMLADB_V=10.4.11
|
||||
|
||||
# Network
|
||||
NETWORK_NAME=traefik_web
|
||||
|
||||
@@ -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'
|
||||
|
||||
volumes:
|
||||
@@ -9,17 +16,17 @@ volumes:
|
||||
networks:
|
||||
traefik_web:
|
||||
external:
|
||||
name: traefik_web
|
||||
name: ${NETWORK_NAME}
|
||||
|
||||
services:
|
||||
|
||||
mariadb:
|
||||
image: mariadb:10.4.11
|
||||
image: mariadb:${DB_V}
|
||||
restart: always
|
||||
volumes:
|
||||
- mariadb:/var/lib/mysql
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_USER: nextcloud
|
||||
@@ -27,21 +34,21 @@ services:
|
||||
MYSQL_DATABASE: nextcloud
|
||||
|
||||
nextcloud:
|
||||
image: nextcloud:18.0.3-apache
|
||||
image: nextcloud:${NEXTCLOUD_V}
|
||||
stdin_open: true
|
||||
tty: true
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
restart: always
|
||||
depends_on:
|
||||
- mariadb
|
||||
- ${PREFIX}_mariadb_1
|
||||
links:
|
||||
- mariadb
|
||||
- ${PREFIX}_mariadb_1
|
||||
volumes:
|
||||
- nextcloud:/var/www/html
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.nextcloud.rule=Host(`${DOMAIN_NAME}`)"
|
||||
- "traefik.http.routers.nextcloud.entrypoints=websecure"
|
||||
- "traefik.http.routers.nextcloud.tls=true"
|
||||
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
|
||||
- "traefik.http.routers.${PREFIX}_nextcloud.rule=Host(`${DOMAIN_NAME}`)"
|
||||
- "traefik.http.routers.${PREFIX}_nextcloud.entrypoints=websecure"
|
||||
- "traefik.http.routers.${PREFIX}_nextcloud.tls=true"
|
||||
- "traefik.http.services.${PREFIX}_nextcloud.loadbalancer.server.port=80"
|
||||
|
||||
+14
-3
@@ -1,4 +1,15 @@
|
||||
# Rename this file to .env
|
||||
# Domains & Project
|
||||
PREFIX=p1
|
||||
DOMAIN_NAME=nextcloud.nickyeoman.com
|
||||
MYSQL_PASSWORD=MyNotSecurePassword1234
|
||||
MYSQL_ROOT_PASSWORD=AlsoNotSecure
|
||||
PHPDB_DOMAIN_NAME=bookstack-db.nickyeoman.com
|
||||
|
||||
# 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
@@ -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'
|
||||
|
||||
volumes:
|
||||
pb-mariadb:
|
||||
pb-gpg_volume:
|
||||
pb-images_volume:
|
||||
pb-gpg:
|
||||
pb-images:
|
||||
|
||||
networks:
|
||||
traefik_web:
|
||||
external:
|
||||
name: traefik_web
|
||||
name: ${NETWORK_NAME}
|
||||
|
||||
services:
|
||||
|
||||
pb-mariadb:
|
||||
image: mariadb:10.4.11
|
||||
container_name: pb-mariadb
|
||||
hostname: pb-mariadb
|
||||
image: mariadb:${DB_V}
|
||||
restart: always
|
||||
volumes:
|
||||
- pb-mariadb:/var/lib/mysql
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: thasdfisIsRoot29837!
|
||||
MYSQL_PASSWORD: p@ssblt!!1NOW
|
||||
MYSQL_DATABASE: db_passbolt
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
MYSQL_DATABASE: passbolt
|
||||
MYSQL_USER: passbolt
|
||||
|
||||
# https://help.passbolt.com/hosting/install/ce/docker.html
|
||||
# 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
|
||||
passbolt:
|
||||
image: passbolt/passbolt:2.12.0-debian
|
||||
container_name: pb-passbolt
|
||||
hostname: passbolt
|
||||
image: passbolt/passbolt:${PASSBOLT_V}
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
restart: always
|
||||
tty: true
|
||||
tmpfs:
|
||||
- /run
|
||||
depends_on:
|
||||
- pb-mariadb
|
||||
- ${PREFIX}_pb-mariadb_1
|
||||
env_file:
|
||||
- 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:
|
||||
- pb-gpg_volume:/var/www/passbolt/config/gpg
|
||||
- pb-images_volume:/var/www/passbolt/webroot/img/public
|
||||
- pb-gpg:/var/www/passbolt/config/gpg
|
||||
- pb-images:/var/www/passbolt/webroot/img/public
|
||||
- ./license:/var/www/passbolt/config/license
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.passbolt.rule=Host(`passbolt.nickyeoman.com`)"
|
||||
- "traefik.http.routers.passbolt.entrypoints=websecure"
|
||||
- "traefik.http.routers.passbolt.tls=true"
|
||||
- "traefik.http.services.passbolt.loadbalancer.server.port=80"
|
||||
- "traefik.http.routers.${PREFIX}_passbolt.rule=Host(`${DOMAIN_NAME}`)"
|
||||
- "traefik.http.routers.${PREFIX}_passbolt.entrypoints=websecure"
|
||||
- "traefik.http.routers.${PREFIX}_passbolt.tls=true"
|
||||
- "traefik.http.services.${PREFIX}_passbolt.loadbalancer.server.port=80"
|
||||
|
||||
@@ -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
|
||||
@@ -1,3 +1,5 @@
|
||||
#TODO: I'm not sure if this is still in use or has been implemented, test further.
|
||||
|
||||
# URL
|
||||
APP_FULL_BASE_URL=https://passbolt.nickyeoman.com
|
||||
|
||||
|
||||
@@ -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"
|
||||
@@ -0,0 +1,9 @@
|
||||
# Domains & Project
|
||||
PREFIX=p1
|
||||
DOMAIN_NAME=phpmyadmin.nickyeoman.com
|
||||
|
||||
# Software versions
|
||||
PHPMYADMIN_V=5.0
|
||||
|
||||
# Network
|
||||
NETWORK_NAME=traefik_web
|
||||
@@ -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'
|
||||
|
||||
volumes:
|
||||
@@ -6,25 +15,26 @@ volumes:
|
||||
networks:
|
||||
traefik_web:
|
||||
external:
|
||||
name: traefik_web
|
||||
name: ${NETWORK_NAME}
|
||||
|
||||
services:
|
||||
|
||||
portainer:
|
||||
image: portainer/portainer
|
||||
# https://hub.docker.com/r/portainer/portainer
|
||||
image: portainer/portainer:${PORTAINER_V}
|
||||
container_name: portainer
|
||||
hostname: portainer
|
||||
command: -H unix:///var/run/docker.sock
|
||||
restart: always
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer:/data
|
||||
command: -H unix:///var/run/docker.sock
|
||||
labels:
|
||||
- "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.tls=true"
|
||||
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
# Domains & Project
|
||||
DOMAIN_NAME=passbolt.nickyeoman.com
|
||||
|
||||
# Software versions
|
||||
PORTAINER_V=1.23.2
|
||||
|
||||
# Network
|
||||
NETWORK_NAME=traefik_web
|
||||
@@ -1,13 +1,16 @@
|
||||
###############################################################################
|
||||
# Rocket Chat
|
||||
# Update the .env file
|
||||
# make sure you use the $PREFIX from .env for project_name
|
||||
# docker-compose -p project_name up -d
|
||||
###############################################################################
|
||||
|
||||
version: '2'
|
||||
|
||||
networks:
|
||||
traefik_web:
|
||||
external:
|
||||
name: traefik_web
|
||||
name: ${NETWORK_NAME}
|
||||
|
||||
volumes:
|
||||
rocketchat:
|
||||
@@ -16,8 +19,10 @@ volumes:
|
||||
rocketchat-scripts:
|
||||
|
||||
services:
|
||||
|
||||
rocketchat:
|
||||
image: rocketchat/rocket.chat:latest
|
||||
# https://hub.docker.com/r/rocketchat/rocket.chat
|
||||
image: rocketchat/rocket.chat:${ROCKETCHAT_V}
|
||||
command: >
|
||||
bash -c
|
||||
"for i in `seq 1 30`; do
|
||||
@@ -30,17 +35,17 @@ services:
|
||||
volumes:
|
||||
- rocketchat:/app/uploads
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
environment:
|
||||
- PORT=3000
|
||||
- ROOT_URL=http://chat.nickyeoman.com
|
||||
- MONGO_URL=mongodb://mongo:27017/rocketchat
|
||||
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
|
||||
- ROOT_URL=https://${DOMAIN_NAME}
|
||||
- MONGO_URL=mongodb://${PREFIX}_rc-db_1:27017/rocketchat
|
||||
- MONGO_OPLOG_URL=mongodb://${PREFIX}_rc-db_1:27017/local
|
||||
- MAIL_URL=smtp://smtp.email
|
||||
# - HTTP_PROXY=http://proxy.domain.com
|
||||
# - HTTPS_PROXY=http://proxy.domain.com
|
||||
depends_on:
|
||||
- mongo
|
||||
- rc-db
|
||||
ports:
|
||||
- 3000:3000
|
||||
labels:
|
||||
@@ -50,14 +55,14 @@ services:
|
||||
- "traefik.http.routers.${PREFIX}_chat.tls=true"
|
||||
- "traefik.http.services.${PREFIX}_chat.loadbalancer.server.port=3000"
|
||||
|
||||
mongo:
|
||||
rc-db:
|
||||
image: mongo:4.0
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- rocketchat-db:/data/db
|
||||
#- ./data/dump:/dump
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
|
||||
labels:
|
||||
- "traefik.enable=false"
|
||||
@@ -78,9 +83,9 @@ services:
|
||||
sleep 5;
|
||||
done; (exit $$s)"
|
||||
depends_on:
|
||||
- mongo
|
||||
- ${PREFIX}_rc-db_1
|
||||
networks:
|
||||
- traefik_web
|
||||
- ${NETWORK_NAME}
|
||||
|
||||
# hubot, the popular chatbot (add the bot user first and change the password before starting this image)
|
||||
hubot:
|
||||
@@ -101,7 +106,7 @@ services:
|
||||
volumes:
|
||||
- rocketchat-scripts:/home/hubot/scripts
|
||||
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
|
||||
ports:
|
||||
- 3001:8080
|
||||
|
||||
+10
-2
@@ -1,5 +1,13 @@
|
||||
# Rename this file to .env
|
||||
# Domains & Project
|
||||
PREFIX=p1
|
||||
DOMAIN_NAME=joomla.nickyeoman.com
|
||||
PREFIX=project_name
|
||||
|
||||
# Passwords
|
||||
MYSQL_PASSWORD=MyNotSecurePassword1234
|
||||
MYSQL_ROOT_PASSWORD=AlsoNotSecure
|
||||
|
||||
# Software versions
|
||||
ROCKETCHAT_V=3.1.1
|
||||
|
||||
# Network
|
||||
NETWORK_NAME=traefik_web
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
#not sure what to put here
|
||||
@@ -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"
|
||||
@@ -0,0 +1,6 @@
|
||||
# Domain and project
|
||||
DOMAIN_NAME=stash.nickyeoman.com
|
||||
PREFIX=p1
|
||||
|
||||
# Network
|
||||
NETWORK_NAME=traefik_web
|
||||
@@ -1,17 +1,21 @@
|
||||
###############################################################################
|
||||
# Traefik
|
||||
#
|
||||
# Should only need one instance of this.
|
||||
# Make sure the .env file is updated
|
||||
# docker-compose up -d
|
||||
###############################################################################
|
||||
|
||||
version: '3.3'
|
||||
|
||||
networks:
|
||||
web:
|
||||
${NETWORK_NAME}:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
|
||||
traefik:
|
||||
image: "traefik:v2.1.3"
|
||||
# https://hub.docker.com/_/traefik
|
||||
image: "traefik:${TRAEFIK_V}"
|
||||
container_name: "traefik"
|
||||
restart: unless-stopped
|
||||
command:
|
||||
@@ -25,17 +29,15 @@ services:
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
networks:
|
||||
- web
|
||||
- ${NETWORK_NAME}
|
||||
labels:
|
||||
# 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.tls.certresolver=leresolver"
|
||||
- "traefik.http.routers.traefik.entrypoints=websecure"
|
||||
- "traefik.http.routers.traefik.middlewares=authtraefik"
|
||||
# https://medium.com/@techupbusiness/add-basic-authentication-in-docker-compose-files-with-traefik-34c781234970
|
||||
# echo $(htpasswd -nbB <USER> "<PASS>") | sed -e s/\\$/\\$\\$/g
|
||||
- "traefik.http.middlewares.authtraefik.basicauth.users=nick:encryptedpasswordgoeshere"
|
||||
- "traefik.http.middlewares.authtraefik.basicauth.users=${TRAEFIK_USER}:${TRAEFIK_PASS}"
|
||||
# global redirect to https
|
||||
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
|
||||
- "traefik.http.routers.http-catchall.entrypoints=web"
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user