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 nhận xét
Chỉ người dùng đã đăng nhập mới có thể đăng nhận xét. Mọi nhận xét đều được quản lí bởi quản trị viên Top.gg. Vui lòng xem qua các quy tắc của chúng tôi trước khi đăng nhận xét.
5 sao
0
4 sao
0
3 sao
0
2 sao
0
1 sao
0
Chưa có nhận xét nào!