Skip to content

Commit dbf7829

Browse files
committed
feat: add docker-compose configuration for deployment and streamline service copying
1 parent 21cac53 commit dbf7829

File tree

1 file changed

+122
-15
lines changed

1 file changed

+122
-15
lines changed

.github/workflows/deploy.yml

Lines changed: 122 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)