@@ -192,32 +192,139 @@ jobs:
192192 # Create the base directory on the remote VM
193193 ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} "mkdir -p ~/music-analytics/vm-deploy"
194194
195+ # Create a new docker-compose.yml file locally
196+ cat > vm-deploy/docker-compose.yml << 'EOF'
197+ version: '3.8'
198+
199+ services:
200+ eureka-server:
201+ build: ./eureka-server
202+ ports:
203+ - "8761:8761"
204+ environment:
205+ - SPRING_PROFILES_ACTIVE=docker
206+ - SERVER_PORT=8761
207+ restart: unless-stopped
208+ healthcheck:
209+ test: ["CMD", "wget", "-q", "--spider", "http://localhost:8761/actuator/health"]
210+ interval: 30s
211+ timeout: 10s
212+ retries: 5
213+ start_period: 120s
214+
215+ api-gateway:
216+ build: ./api-gateway
217+ ports:
218+ - "8080:8080"
219+ environment:
220+ - SPRING_PROFILES_ACTIVE=production
221+ - EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://eureka-server:8761/eureka/
222+ - ORACLE_EXTERNAL_HOSTNAME=${ORACLE_EXTERNAL_HOSTNAME}
223+ - RENDER_EXTERNAL_HOSTNAME=disabled
224+ - CORS_ALLOWED_ORIGINS=https://musicanalytics.netlify.app,https://music-analytics.abenezeranglo.uk
225+ - SPRING_CLOUD_SERVICE-REGISTRY_AUTO-REGISTRATION_ENABLED=false
226+ depends_on:
227+ eureka-server:
228+ condition: service_healthy
229+ restart: unless-stopped
230+ healthcheck:
231+ test: ["CMD-SHELL", "curl -f http://localhost:8080/actuator/health || exit 1"]
232+ interval: 30s
233+ timeout: 10s
234+ retries: 3
235+ start_period: 60s
236+
237+ recommendation-service:
238+ build: ./recommendation-service
239+ ports:
240+ - "8082:8082"
241+ environment:
242+ - SPRING_PROFILES_ACTIVE=production
243+ - EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://eureka-server:8761/eureka/
244+ - RENDER_EXTERNAL_HOSTNAME=disabled
245+ - SPRING_CLOUD_SERVICE-REGISTRY_AUTO-REGISTRATION_ENABLED=false
246+ depends_on:
247+ eureka-server:
248+ condition: service_healthy
249+ volumes:
250+ - recommendation-data:/data
251+ restart: unless-stopped
252+ healthcheck:
253+ test: ["CMD-SHELL", "curl -f http://localhost:8082/actuator/health || exit 1"]
254+ interval: 30s
255+ timeout: 10s
256+ retries: 3
257+ start_period: 60s
258+
259+ statistics-service:
260+ build: ./statistics-service
261+ ports:
262+ - "8083:8083"
263+ environment:
264+ - SPRING_PROFILES_ACTIVE=production
265+ - EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://eureka-server:8761/eureka/
266+ - RENDER_EXTERNAL_HOSTNAME=disabled
267+ - SPRING_CLOUD_SERVICE-REGISTRY_AUTO-REGISTRATION_ENABLED=false
268+ depends_on:
269+ eureka-server:
270+ condition: service_healthy
271+ volumes:
272+ - statistics-data:/data
273+ restart: unless-stopped
274+ healthcheck:
275+ test: ["CMD-SHELL", "curl -f http://localhost:8083/actuator/health || exit 1"]
276+ interval: 30s
277+ timeout: 10s
278+ retries: 3
279+ start_period: 60s
280+
281+ user-tracking-service:
282+ build: ./user-tracking-service
283+ ports:
284+ - "8084:8084"
285+ environment:
286+ - SPRING_PROFILES_ACTIVE=production
287+ - EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://eureka-server:8761/eureka/
288+ - RENDER_EXTERNAL_HOSTNAME=disabled
289+ - SPRING_CLOUD_SERVICE-REGISTRY_AUTO-REGISTRATION_ENABLED=false
290+ depends_on:
291+ eureka-server:
292+ condition: service_healthy
293+ volumes:
294+ - user-tracking-data:/data
295+ restart: unless-stopped
296+ healthcheck:
297+ test: ["CMD-SHELL", "curl -f http://localhost:8084/actuator/health || exit 1"]
298+ interval: 30s
299+ timeout: 10s
300+ retries: 3
301+ start_period: 60s
302+
303+ volumes:
304+ recommendation-data:
305+ statistics-data:
306+ user-tracking-data:
307+ EOF
308+
195309 # Recursively copy each service directory to the remote VM with the destination path quoted
196- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/eureka-server opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/eureka-server "
197- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/api-gateway opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/api-gateway "
198- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/recommendation-service opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/recommendation-service "
199- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/statistics-service opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/statistics-service "
200- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/user-tracking-service opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/user-tracking-service "
310+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/eureka-server opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/"
311+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/api-gateway opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/"
312+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/recommendation-service opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/"
313+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/statistics-service opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/"
314+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa -r vm-deploy/user-tracking-service opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/"
201315
202316 # Copy the docker-compose file and environment file to the remote VM
203- scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa cloud -deploy/docker-compose.direct .yml opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/docker-compose.yml"
317+ scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm -deploy/docker-compose.yml opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/docker-compose.yml"
204318 scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/.env opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/.env"
205319
206- # On the remote VM: log in to the Docker registry, build images for each service, and deploy containers
320+ # On the remote VM: log in to the Docker registry and deploy containers
207321 ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} "cd ~/music-analytics/vm-deploy && \
208322 echo 'Logging in to Docker registry...' && \
209323 echo \"${{ secrets.OCI_AUTH_TOKEN }}\" | docker login ${{ secrets.OCI_REGISTRY }} -u ${{ secrets.OCI_USERNAME }} --password-stdin && \
210324 echo 'Stopping and removing existing containers if any...' && \
211325 docker ps -q | xargs -r docker stop && docker ps -aq | xargs -r docker rm && \
212- echo 'Modifying docker-compose.yml to use local Dockerfiles...' && \
213- sed -i '/^version:/d' docker-compose.yml && \
214- sed -i 's|build:\\n context: ./|build: ./|g' docker-compose.yml && \
215326 echo 'Building Docker images locally...' && \
216- for service in eureka-server api-gateway recommendation-service statistics-service user-tracking-service; do \
217- cd \$service && \
218- docker build -t music-analytics/\$service . || exit 1; \
219- cd .. ; \
220- done && \
327+ docker-compose build --no-cache && \
221328 echo 'Starting new containers with docker-compose...' && \
222329 docker-compose up -d && \
223330 echo 'Container status:' && docker-compose ps"
0 commit comments