curl -O https://www.influxdata.com/d/install_influxdb3.sh && sh install_influxdb3.sh enterprise
SERVICES = { 'redis' => { ip: '192.168.56.10', ports: { 6379 => 6379 } }, 'backend' => { ip: '192.168.56.11', ports: { 8080 => 8080 } }, 'frontend' => { ip: '192.168.56.12', ports: { 8081 => 8081 } } }
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp-education/ubuntu-24-04" config.vm.box_version = "0.1.0"
config.vm.provision "shell", name: "common", path: "common-dependencies.sh"
config.vm.define "redis" do |redis| redis.vm.hostname = "redis" redis.vm.network "private_network", ip: SERVICES['redis'][:ip] redis.vm.network "forwarded_port", guest: 6379, host: 6379 redis.vm.synced_folder "./redis/terramino-go", "/home/vagrant/terramino-go", create: true
redis.vm.provision "shell", name: "start-redis", inline: <<-SHELL cd /home/vagrant/terramino-go docker compose up -d redis SHELL
redis.vm.provision "shell", name: "reload-redis", run: "never", inline: <<-SHELL cd /home/vagrant/terramino-go docker compose stop redis docker compose rm -f redis docker compose up -d redis SHELL end
config.vm.define "backend" do |backend| backend.vm.hostname = "backend" backend.vm.network "private_network", ip: SERVICES['backend'][:ip] backend.vm.network "forwarded_port", guest: 8080, host: 8080 backend.vm.synced_folder "./backend/terramino-go", "/home/vagrant/terramino-go", create: true
backend.vm.provision "shell", name: "start-backend", inline: <<-SHELL cd /home/vagrant/terramino-go
# Get Redis IP dynamically (with 1 minute timeout) for i in {1..30}; do if REDIS_IP=$(getent hosts redis.local | awk '{print $1}'); then break fi echo "Waiting for redis.local to be resolvable..." sleep 2 done
# Run the backend container with Redis host docker build -f Dockerfile.backend -t backend .
docker run -d -p 8080:8080
-e REDIS_HOST=redis.local
-e REDIS_PORT=6379
-e TERRAMINO_PORT=8080
--add-host redis.local:${REDIS_IP}
backend
# Add CLI alias echo 'alias cli="docker compose exec backend ./terramino-cli"' >> /home/vagrant/.bashrc SHELL
backend.vm.provision "shell", name: "reload-backend", run: "never", inline: <<-SHELL cd /home/vagrant/terramino-go
# Get Redis IP dynamically REDIS_IP=$(getent hosts redis.local | awk '{print $1}')
docker stop backend || true
docker rm -f backend || true
docker build -f Dockerfile.backend -t backend .
docker run -d --network host -p 8080:8080
-e REDIS_HOST=redis.local
-e REDIS_PORT=6379
-e TERRAMINO_PORT=8080
--add-host redis.local:${REDIS_IP}
--name backend
backend
SHELL
end
config.vm.define "frontend" do |frontend| frontend.vm.hostname = "frontend" frontend.vm.network "private_network", ip: SERVICES['frontend'][:ip] frontend.vm.network "forwarded_port", guest: 8081, host: 8081 frontend.vm.synced_folder "./frontend/terramino-go", "/home/vagrant/terramino-go", create: true
frontend.vm.provision "shell", name: "start-frontend", inline: <<-SHELL cd /home/vagrant/terramino-go
# Wait for nginx.conf to be available to update backend hostname for i in {1..30}; do if [ -f nginx.conf ]; then break fi echo "Waiting for nginx.conf to be available..." sleep 2 done
# Update nginx.conf to use backend hostname sed -i 's#proxy_pass http://backend:8080#proxy_pass http://backend.local:8080#' nginx.conf || { echo "Failed to update nginx.conf" exit 1 }
# Get backend IP dynamically (with 1 minute timeout) for i in {1..30}; do if BACKEND_IP=$(getent hosts backend.local | awk '{print $1}'); then break fi echo "Waiting for backend.local to be resolvable..." sleep 2 done
docker build -f Dockerfile.frontend -t frontend .
docker run -d -p 8081:8081
--add-host backend.local:${BACKEND_IP}
frontend
SHELL
frontend.vm.provision "shell", name: "reload-frontend", run: "never", inline: <<-SHELL cd /home/vagrant/terramino-go
# Get backend IP dynamically BACKEND_IP=$(getent hosts backend.local | awk '{print $1}')
docker stop frontend || true
docker rm -f frontend || true
docker build -f Dockerfile.frontend -t frontend .
docker run -d -p 8081:8081
--add-host backend.local:${BACKEND_IP}
frontend
SHELL
end
end
0
0 समीक्षाएं
समीक्षा केवल पंजीकृत उपयोगकर्ताओं द्वारा ही छोड़ी जा सकती है। सभी समीक्षाएँ Top.gg मॉडरेटर द्वारा संचालित की जाती हैं। कृपया पोस्ट करने से पहले हमारे दिशानिर्देशों की जांच करना सुनिश्चित करें।
5 स्टार्स
0
4 स्टार्स
0
3 स्टार्स
0
2 स्टार्स
0
1 स्टार
0
यहाँ अभी तक कोई समीक्षा नहीं है!