mirror of
https://github.com/yusing/godoxy.git
synced 2026-01-11 14:20:32 +01:00
- Updated dev.compose.yml to define a new bench service that serves 4096 bytes of random data. - Modified configurations for Traefik, Caddy, and Nginx to route traffic to the new bench service. - Added Dockerfile and Go application for the bench server, including necessary Go modules. - Updated benchmark script to target the new bench service endpoint.
258 lines
6.1 KiB
YAML
258 lines
6.1 KiB
YAML
x-benchmark: &benchmark
|
|
restart: no
|
|
labels:
|
|
proxy.exclude: true
|
|
proxy.#1.healthcheck.disable: true
|
|
services:
|
|
app:
|
|
image: godoxy-dev
|
|
build:
|
|
context: .
|
|
dockerfile: dev.Dockerfile
|
|
container_name: godoxy-proxy-dev
|
|
restart: unless-stopped
|
|
env_file: dev.env
|
|
environment:
|
|
DOCKER_HOST: unix:///var/run/docker.sock
|
|
TZ: Asia/Hong_Kong
|
|
API_ADDR: 127.0.0.1:8999
|
|
API_USER: dev
|
|
API_PASSWORD: 1234
|
|
API_SKIP_ORIGIN_CHECK: true
|
|
API_JWT_TTL: 24h
|
|
DEBUG: true
|
|
API_JWT_SECRET: 1234567891234567
|
|
labels:
|
|
proxy.exclude: true
|
|
proxy.#1.healthcheck.disable: true
|
|
ipc: host
|
|
network_mode: host
|
|
volumes:
|
|
- ./bin/godoxy:/app/run:ro
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- ./dev-data/config:/app/config
|
|
- ./dev-data/certs:/app/certs
|
|
- ./dev-data/error_pages:/app/error_pages:ro
|
|
- ./dev-data/data:/app/data
|
|
- ./dev-data/logs:/app/logs
|
|
- ~/certs/myCA.pem:/etc/ssl/certs/ca.crt:ro
|
|
parca:
|
|
image: ghcr.io/parca-dev/parca:v0.24.2
|
|
container_name: godoxy-parca
|
|
restart: unless-stopped
|
|
command: [/parca, --config-path, /parca.yaml]
|
|
network_mode: host
|
|
# ports:
|
|
# - 7070:7070
|
|
configs:
|
|
- source: parca
|
|
target: /parca.yaml
|
|
labels:
|
|
proxy.#1.port: "7070"
|
|
tinyauth:
|
|
image: ghcr.io/steveiliop56/tinyauth:v3
|
|
container_name: tinyauth
|
|
restart: unless-stopped
|
|
environment:
|
|
- SECRET=12345678912345671234567891234567
|
|
- APP_URL=https://tinyauth.my.app
|
|
- USERS=user:$$2a$$10$$UdLYoJ5lgPsC0RKqYH/jMua7zIn0g9kPqWmhYayJYLaZQ/FTmH2/u # user:password
|
|
labels:
|
|
proxy.tinyauth.port: "3000"
|
|
jotty: # issue #182
|
|
image: ghcr.io/fccview/jotty:latest
|
|
container_name: jotty
|
|
user: "1000:1000"
|
|
tmpfs:
|
|
- /app/data:rw,uid=1000,gid=1000
|
|
- /app/config:rw,uid=1000,gid=1000
|
|
- /app/.next/cache:rw,uid=1000,gid=1000
|
|
restart: unless-stopped
|
|
environment:
|
|
- NODE_ENV=production
|
|
labels:
|
|
proxy.aliases: "jotty.my.app"
|
|
postgres-test:
|
|
image: postgres:18-alpine
|
|
container_name: postgres-test
|
|
restart: unless-stopped
|
|
environment:
|
|
- POSTGRES_USER=postgres
|
|
- POSTGRES_PASSWORD=postgres
|
|
- POSTGRES_DB=postgres
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 30s
|
|
h2c_test_server:
|
|
build:
|
|
context: cmd/h2c_test_server
|
|
dockerfile: Dockerfile
|
|
container_name: h2c_test
|
|
restart: unless-stopped
|
|
labels:
|
|
proxy.#1.scheme: h2c
|
|
proxy.#1.port: 80
|
|
bench: # returns 4096 bytes of random data
|
|
<<: *benchmark
|
|
build:
|
|
context: cmd/bench_server
|
|
dockerfile: Dockerfile
|
|
container_name: bench
|
|
godoxy:
|
|
<<: *benchmark
|
|
build: .
|
|
container_name: godoxy-benchmark
|
|
ports:
|
|
- 8080:80
|
|
configs:
|
|
- source: godoxy_config
|
|
target: /app/config/config.yml
|
|
- source: godoxy_provider
|
|
target: /app/config/providers.yml
|
|
traefik:
|
|
<<: *benchmark
|
|
image: traefik:latest
|
|
container_name: traefik
|
|
command:
|
|
- --api.insecure=true
|
|
- --entrypoints.web.address=:8081
|
|
- --providers.file.directory=/etc/traefik/dynamic
|
|
- --providers.file.watch=true
|
|
- --log.level=ERROR
|
|
ports:
|
|
- 8081:8081
|
|
configs:
|
|
- source: traefik_config
|
|
target: /etc/traefik/dynamic/routes.yml
|
|
caddy:
|
|
<<: *benchmark
|
|
image: caddy:latest
|
|
container_name: caddy
|
|
ports:
|
|
- 8082:80
|
|
configs:
|
|
- source: caddy_config
|
|
target: /etc/caddy/Caddyfile
|
|
tmpfs:
|
|
- /data
|
|
- /config
|
|
nginx:
|
|
<<: *benchmark
|
|
image: nginx:latest
|
|
container_name: nginx
|
|
command: nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
|
|
ports:
|
|
- 8083:80
|
|
configs:
|
|
- source: nginx_config
|
|
target: /etc/nginx/nginx.conf
|
|
|
|
configs:
|
|
godoxy_config:
|
|
content: |
|
|
providers:
|
|
include:
|
|
- providers.yml
|
|
godoxy_provider:
|
|
content: |
|
|
bench.domain.com:
|
|
host: bench
|
|
traefik_config:
|
|
content: |
|
|
http:
|
|
routers:
|
|
bench:
|
|
rule: "Host(`bench.domain.com`)"
|
|
entryPoints:
|
|
- web
|
|
service: bench
|
|
services:
|
|
bench:
|
|
loadBalancer:
|
|
servers:
|
|
- url: "http://bench:80"
|
|
caddy_config:
|
|
content: |
|
|
{
|
|
admin off
|
|
auto_https off
|
|
default_bind 0.0.0.0
|
|
|
|
servers {
|
|
protocols h1 h2c
|
|
}
|
|
}
|
|
|
|
http://bench.domain.com {
|
|
reverse_proxy bench:80
|
|
}
|
|
nginx_config:
|
|
content: |
|
|
worker_processes auto;
|
|
worker_rlimit_nofile 65535;
|
|
error_log /dev/null;
|
|
pid /var/run/nginx.pid;
|
|
|
|
events {
|
|
worker_connections 10240;
|
|
multi_accept on;
|
|
use epoll;
|
|
}
|
|
|
|
http {
|
|
include /etc/nginx/mime.types;
|
|
default_type application/octet-stream;
|
|
|
|
access_log off;
|
|
|
|
sendfile on;
|
|
tcp_nopush on;
|
|
tcp_nodelay on;
|
|
keepalive_timeout 65;
|
|
keepalive_requests 10000;
|
|
|
|
upstream backend {
|
|
server bench:80;
|
|
keepalive 128;
|
|
}
|
|
|
|
server {
|
|
listen 80 default_server;
|
|
server_name _;
|
|
http2 on;
|
|
|
|
return 404;
|
|
}
|
|
|
|
server {
|
|
listen 80;
|
|
server_name bench.domain.com;
|
|
http2 on;
|
|
|
|
location / {
|
|
proxy_pass http://backend;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Connection "";
|
|
proxy_set_header Host $$host;
|
|
proxy_set_header X-Real-IP $$remote_addr;
|
|
proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;
|
|
proxy_buffering off;
|
|
}
|
|
}
|
|
}
|
|
parca:
|
|
content: |
|
|
object_storage:
|
|
bucket:
|
|
type: "FILESYSTEM"
|
|
config:
|
|
directory: "./data"
|
|
scrape_configs:
|
|
- job_name: "parca"
|
|
scrape_interval: "1s"
|
|
static_configs:
|
|
- targets: [ 'localhost:7777' ]
|