mirror of
https://github.com/MatthewL246/pretendo-docker.git
synced 2026-03-21 17:34:37 -05:00
This will no longer work when the containers run as a non-root user, and they are unnecessary when the logs can be taken directly from the container.
461 lines
10 KiB
YAML
461 lines
10 KiB
YAML
name: pretendo-network
|
|
services:
|
|
mitmproxy-pretendo:
|
|
image: ghcr.io/matthewl246/mitmproxy-pretendo:local
|
|
# build: ./repos/mitmproxy-pretendo
|
|
restart: always
|
|
ports:
|
|
# Proxy server
|
|
- 8080:8080
|
|
# Mitmweb interface
|
|
- 127.0.0.1:8081:8081
|
|
volumes:
|
|
- type: volume
|
|
source: mitmproxy-pretendo-data
|
|
target: /home/mitmproxy/.mitmproxy
|
|
command: mitmweb --web-host 0.0.0.0
|
|
tty: true
|
|
|
|
# Uncomment everything below to enable SSSL connections with DNS redirection
|
|
#
|
|
# nginx-sssl:
|
|
# # This forwards all requests to the primary Nginx
|
|
# build: ./repos/SSSL-DNS/nginx
|
|
# restart: always
|
|
# ports:
|
|
# # HTTPS
|
|
# - 443:443
|
|
# volumes:
|
|
# - type: bind
|
|
# source: ./config/nginx-sssl.conf
|
|
# target: /opt/nginx/conf/nginx.conf
|
|
# read_only: true
|
|
# - type: bind
|
|
# source: ./console-files/cert-chain.pem
|
|
# target: /opt/nginx/ssl/ca.pem
|
|
# read_only: true
|
|
# - type: bind
|
|
# source: ./console-files/ssl-cert-private-key.pem
|
|
# target: /opt/nginx/ssl/private.key
|
|
# read_only: true
|
|
#
|
|
# coredns-public:
|
|
# # This responds to DNS queries from client consoles, redirecting Nintendo requests to the local server
|
|
# image: coredns/coredns:latest
|
|
# restart: always
|
|
# ports:
|
|
# # DNS
|
|
# - 53:53/udp
|
|
# volumes:
|
|
# - type: bind
|
|
# source: ./config/public.Corefile
|
|
# target: /etc/coredns/Corefile
|
|
# read_only: true
|
|
# networks:
|
|
# default:
|
|
# command: -conf /etc/coredns/Corefile
|
|
# env_file:
|
|
# - ./.env
|
|
|
|
coredns-internal:
|
|
# This responds to DNS queries from the internal network of containers, redirecting Pretendo to the Nginx container
|
|
image: coredns/coredns:latest
|
|
restart: always
|
|
volumes:
|
|
- type: bind
|
|
source: ./config/internal.Corefile
|
|
target: /etc/coredns/Corefile
|
|
read_only: true
|
|
networks:
|
|
internal:
|
|
ipv4_address: 172.20.0.200
|
|
command: -conf /etc/coredns/Corefile
|
|
|
|
nginx:
|
|
image: nginx:mainline-alpine
|
|
depends_on:
|
|
- coredns-internal
|
|
- mitmproxy-pretendo
|
|
restart: always
|
|
ports:
|
|
# HTTP
|
|
- 80:80
|
|
volumes:
|
|
- type: bind
|
|
source: ./config/nginx.conf
|
|
target: /etc/nginx/nginx.conf
|
|
read_only: true
|
|
- type: bind
|
|
source: ./config/nginx
|
|
target: /etc/nginx/conf.d/
|
|
read_only: true
|
|
networks:
|
|
default:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
|
|
mongodb:
|
|
# TODO: Set up authentication
|
|
image: mongo:latest
|
|
depends_on:
|
|
- coredns-internal
|
|
restart: always
|
|
ports:
|
|
# For connecting with mongosh or MongoDB Compass
|
|
- 127.0.0.1:27017:27017
|
|
volumes:
|
|
- type: bind
|
|
source: ./config/mongod.conf
|
|
target: /etc/mongod.conf
|
|
read_only: true
|
|
- type: volume
|
|
source: mongodb-database
|
|
target: /data/db
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
command: --config "/etc/mongod.conf" --replSet rs
|
|
|
|
mongo-express:
|
|
image: mongo-express:latest
|
|
depends_on:
|
|
- coredns-internal
|
|
- mongodb
|
|
restart: always
|
|
ports:
|
|
# Web interface
|
|
- 127.0.0.1:8082:8082
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/mongo-express.env
|
|
|
|
minio:
|
|
image: minio/minio:latest
|
|
depends_on:
|
|
- coredns-internal
|
|
- nginx
|
|
restart: always
|
|
ports:
|
|
# Web console
|
|
- 127.0.0.1:8083:8083
|
|
volumes:
|
|
- type: volume
|
|
source: minio-s3-data
|
|
target: /data
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/minio.env
|
|
- ./environment/minio.local.env
|
|
command: server --console-address ":8083"
|
|
|
|
redis:
|
|
image: redis:alpine
|
|
depends_on:
|
|
- coredns-internal
|
|
restart: always
|
|
volumes:
|
|
- type: volume
|
|
source: redis-data
|
|
target: /data
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
command: redis-server --save 60 1
|
|
|
|
redis-commander:
|
|
image: ghcr.io/joeferner/redis-commander:latest
|
|
depends_on:
|
|
- coredns-internal
|
|
- redis
|
|
restart: always
|
|
ports:
|
|
# Web interface
|
|
- 127.0.0.1:8086:8086
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/redis-commander.env
|
|
|
|
mailpit:
|
|
image: axllent/mailpit:latest
|
|
depends_on:
|
|
- coredns-internal
|
|
restart: always
|
|
ports:
|
|
# Mailpit web UI
|
|
- 127.0.0.1:8084:8084
|
|
volumes:
|
|
- type: volume
|
|
source: mailpit-mail
|
|
target: /data
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/mailpit.env
|
|
|
|
postgres:
|
|
image: postgres:alpine
|
|
depends_on:
|
|
- coredns-internal
|
|
restart: always
|
|
ports:
|
|
# For connecting with pgAdmin
|
|
- 127.0.0.1:5432:5432
|
|
volumes:
|
|
- type: volume
|
|
source: postgres-database
|
|
target: /var/lib/postgresql/data
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/postgres.env
|
|
- ./environment/postgres.local.env
|
|
|
|
adminer:
|
|
image: adminer:latest
|
|
depends_on:
|
|
- coredns-internal
|
|
- postgres
|
|
restart: always
|
|
ports:
|
|
# Adminer web interface
|
|
- 127.0.0.1:8085:8080
|
|
volumes:
|
|
- type: bind
|
|
source: ./config/adminer-login-servers.php
|
|
target: /var/www/html/plugins-enabled/login-servers.php
|
|
read_only: true
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/adminer.env
|
|
|
|
account:
|
|
build: ./repos/account
|
|
depends_on:
|
|
- coredns-internal
|
|
- nginx
|
|
- mongodb
|
|
- minio
|
|
- redis
|
|
- mailpit
|
|
restart: always
|
|
ports:
|
|
# Node.js debugger
|
|
- 127.0.0.1:9229:9229
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/account.env
|
|
- ./environment/account.local.env
|
|
|
|
website:
|
|
build: ./repos/website
|
|
depends_on:
|
|
- account
|
|
- mongodb
|
|
restart: always
|
|
ports:
|
|
# Node.js debugger
|
|
- 127.0.0.1:9230:9230
|
|
volumes:
|
|
- type: bind
|
|
source: ./config/website-config.json
|
|
target: /home/node/app/config.json
|
|
read_only: true
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
|
|
friends:
|
|
build: ./repos/friends
|
|
depends_on:
|
|
- account
|
|
- postgres
|
|
restart: always
|
|
ports:
|
|
# Go delve debugger
|
|
- 127.0.0.1:2345:2345
|
|
# Authentication server
|
|
- 6000:6000/udp
|
|
# Secure server
|
|
- 6001:6001/udp
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/friends.env
|
|
- ./environment/friends.local.env
|
|
|
|
miiverse-api:
|
|
build: ./repos/miiverse-api
|
|
depends_on:
|
|
- account
|
|
- mongodb
|
|
- friends
|
|
restart: always
|
|
ports:
|
|
# Node.js debugger
|
|
- 127.0.0.1:9231:9231
|
|
volumes:
|
|
- type: bind
|
|
source: ./config/mongoose-connect-options.json
|
|
target: /home/node/app/mongoose-connect-options.json
|
|
read_only: true
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/miiverse-api.env
|
|
- ./environment/miiverse-api.local.env
|
|
|
|
juxtaposition-ui:
|
|
build: ./repos/juxtaposition-ui
|
|
depends_on:
|
|
- account
|
|
- mongodb
|
|
- redis
|
|
- friends
|
|
restart: always
|
|
ports:
|
|
# Node.js debugger
|
|
- 127.0.0.1:9232:9232
|
|
volumes:
|
|
- type: bind
|
|
source: ./config/juxtaposition-config.js
|
|
target: /app/config.js
|
|
read_only: true
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/juxtaposition-ui.env
|
|
- ./environment/juxtaposition-ui.local.env
|
|
|
|
boss:
|
|
build: ./repos/BOSS
|
|
depends_on:
|
|
- account
|
|
- mongodb
|
|
restart: always
|
|
ports:
|
|
# Node.js debugger
|
|
- 127.0.0.1:9233:9233
|
|
volumes:
|
|
- type: bind
|
|
source: ./config/mongoose-connect-options.json
|
|
target: /home/node/app/mongoose-connect-options.json
|
|
read_only: true
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/boss.env
|
|
- ./environment/boss.local.env
|
|
|
|
wiiu-chat-authentication:
|
|
build: ./repos/wiiu-chat-authentication
|
|
depends_on:
|
|
- account
|
|
- mongodb
|
|
restart: always
|
|
ports:
|
|
# Go delve debugger
|
|
- 127.0.0.1:2346:2346
|
|
# Authentication server
|
|
- 6002:6002/udp
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/wiiu-chat.env
|
|
- ./environment/wiiu-chat.local.env
|
|
|
|
wiiu-chat-secure:
|
|
build: ./repos/wiiu-chat-secure
|
|
depends_on:
|
|
- account
|
|
- mongodb
|
|
- wiiu-chat-authentication
|
|
restart: always
|
|
ports:
|
|
# Go delve debugger
|
|
- 127.0.0.1:2347:2347
|
|
# Secure server
|
|
- 6003:6003/udp
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/wiiu-chat.env
|
|
- ./environment/wiiu-chat.local.env
|
|
|
|
super-mario-maker:
|
|
build: ./repos/super-mario-maker
|
|
depends_on:
|
|
- account
|
|
- minio
|
|
- postgres
|
|
restart: always
|
|
ports:
|
|
# Go delve debugger
|
|
- 127.0.0.1:2348:2348
|
|
# Authentication server
|
|
- 6004:6004/udp
|
|
# Secure server
|
|
- 6005:6005/udp
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/super-mario-maker.env
|
|
- ./environment/super-mario-maker.local.env
|
|
|
|
splatoon:
|
|
build: ./repos/splatoon
|
|
depends_on:
|
|
- account
|
|
- mongodb
|
|
restart: unless-stopped
|
|
ports:
|
|
# Go delve debugger
|
|
- 127.0.0.1:2350:2351
|
|
# Authentication server
|
|
- 6006:6006/udp
|
|
# Secure server
|
|
- 6007:6007/udp
|
|
networks:
|
|
internal:
|
|
dns: 172.20.0.200
|
|
env_file:
|
|
- ./environment/splatoon.env
|
|
- ./environment/splatoon.local.env
|
|
|
|
volumes:
|
|
mitmproxy-pretendo-data:
|
|
mongodb-database:
|
|
minio-s3-data:
|
|
redis-data:
|
|
mailpit-mail:
|
|
postgres-database:
|
|
|
|
networks:
|
|
default:
|
|
# We need to use a custom network so that we can set a static IP address for
|
|
# CoreDNS and use it as a DNS server for the other containers.
|
|
internal:
|
|
driver: bridge
|
|
ipam:
|
|
driver: default
|
|
config:
|
|
- subnet: 172.20.0.0/24
|