working base
This commit is contained in:
149
docker-compose.yml
Normal file
149
docker-compose.yml
Normal file
@@ -0,0 +1,149 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
route-switcher:
|
||||
build: .
|
||||
privileged: true
|
||||
depends_on:
|
||||
- primary-router
|
||||
- secondary-router
|
||||
- icmp-target
|
||||
networks:
|
||||
primary-net:
|
||||
ipv4_address: 192.168.200.10
|
||||
secondary-net:
|
||||
ipv4_address: 192.168.201.10
|
||||
environment:
|
||||
- RUST_LOG=debug
|
||||
- PRIMARY_INTERFACE=eth0
|
||||
- SECONDARY_INTERFACE=eth1
|
||||
- PRIMARY_GATEWAY=192.168.200.11
|
||||
- SECONDARY_GATEWAY=192.168.201.11
|
||||
- PING_TARGET=192.168.202.100
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
volumes:
|
||||
- ./scripts:/scripts:ro
|
||||
|
||||
route-switcher-dev:
|
||||
image: rust:1.93-bullseye
|
||||
privileged: true
|
||||
working_dir: /app
|
||||
command: |
|
||||
sh -c "
|
||||
echo nameserver 192.168.10.1 > /etc/resolv.conf &&
|
||||
/bin/sleep infinity
|
||||
"
|
||||
networks:
|
||||
primary-net:
|
||||
ipv4_address: 192.168.200.20
|
||||
secondary-net:
|
||||
ipv4_address: 192.168.201.20
|
||||
default:
|
||||
dns:
|
||||
- 192.168.10.1
|
||||
environment:
|
||||
- RUST_LOG=debug
|
||||
- PRIMARY_INTERFACE=eth0
|
||||
- SECONDARY_INTERFACE=eth1
|
||||
- PRIMARY_GATEWAY=192.168.200.11
|
||||
- SECONDARY_GATEWAY=192.168.201.11
|
||||
- PING_TARGET=192.168.202.100
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
volumes:
|
||||
- .:/app:rw
|
||||
- cargo-cache:/usr/local/cargo/registry
|
||||
|
||||
primary-router:
|
||||
image: alpine:latest
|
||||
privileged: true
|
||||
networks:
|
||||
primary-net:
|
||||
ipv4_address: 192.168.200.11
|
||||
target-net:
|
||||
ipv4_address: 192.168.202.11
|
||||
default:
|
||||
dns:
|
||||
- 192.168.10.1
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
command: sh /scripts/setup-router.sh primary
|
||||
volumes:
|
||||
- ./scripts:/scripts:ro
|
||||
|
||||
secondary-router:
|
||||
image: alpine:latest
|
||||
privileged: true
|
||||
networks:
|
||||
secondary-net:
|
||||
ipv4_address: 192.168.201.11
|
||||
target-net:
|
||||
ipv4_address: 192.168.202.12
|
||||
default:
|
||||
dns:
|
||||
- 192.168.10.1
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_ADMIN
|
||||
command: sh /scripts/setup-router.sh secondary
|
||||
volumes:
|
||||
- ./scripts:/scripts:ro
|
||||
|
||||
icmp-target:
|
||||
image: alpine:latest
|
||||
networks:
|
||||
target-net:
|
||||
ipv4_address: 192.168.202.100
|
||||
default:
|
||||
dns:
|
||||
- 192.168.10.1
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
command: |
|
||||
sh -c "
|
||||
echo 'ICMP Target configured at 192.168.202.100' &&
|
||||
echo 'Routes:' &&
|
||||
ip route show &&
|
||||
while true; do
|
||||
echo $(date): ICMP Target alive
|
||||
sleep 30
|
||||
done
|
||||
"
|
||||
healthcheck:
|
||||
test: ["CMD", "ping", "-c", "1", "192.168.202.11"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
networks:
|
||||
primary-net:
|
||||
driver: bridge
|
||||
internal: true
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.200.0/24
|
||||
|
||||
secondary-net:
|
||||
driver: bridge
|
||||
internal: true
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.201.0/24
|
||||
|
||||
target-net:
|
||||
driver: bridge
|
||||
internal: true
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 192.168.202.0/24
|
||||
|
||||
default:
|
||||
external: true
|
||||
name: podman
|
||||
|
||||
volumes:
|
||||
cargo-cache:
|
||||
Reference in New Issue
Block a user