Skip to content

Commit f27c84c

Browse files
committed
Update Docker configuration files and deployment workflow
1 parent e2e49af commit f27c84c

File tree

2 files changed

+58
-48
lines changed

2 files changed

+58
-48
lines changed

.github/workflows/deploy.yml

Lines changed: 56 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -84,26 +84,60 @@ jobs:
8484
8585
- name: Prepare Docker build context
8686
run: |
87-
# Create target directories under vm-deploy for each service
88-
mkdir -p vm-deploy/eureka-server/target \
89-
vm-deploy/api-gateway/target \
90-
vm-deploy/recommendation-service/target \
91-
vm-deploy/statistics-service/target \
92-
vm-deploy/user-tracking-service/target
87+
# Create directories under vm-deploy for each service
88+
mkdir -p vm-deploy/eureka-server \
89+
vm-deploy/api-gateway \
90+
vm-deploy/recommendation-service \
91+
vm-deploy/statistics-service \
92+
vm-deploy/user-tracking-service
9393
94-
# Copy the pre-built JAR files into the respective target directories with expected names
95-
cp $(find eureka-server/target -type f -name "eureka-server*.jar" | grep -v original) vm-deploy/eureka-server/target/eureka-server-1.0-SNAPSHOT.jar
96-
cp $(find api-gateway/target -type f -name "api-gateway*.jar" | grep -v original) vm-deploy/api-gateway/target/api-gateway-1.0-SNAPSHOT.jar
97-
cp $(find recommendation-service/target -type f -name "recommendation-service*.jar" | grep -v original) vm-deploy/recommendation-service/target/recommendation-service-1.0-SNAPSHOT.jar
98-
cp $(find statistics-service/target -type f -name "statistics-service*.jar" | grep -v original) vm-deploy/statistics-service/target/statistics-service-1.0-SNAPSHOT.jar
99-
cp $(find user-tracking-service/target -type f -name "user-tracking-service*.jar" | grep -v original) vm-deploy/user-tracking-service/target/user-tracking-service-1.0-SNAPSHOT.jar
94+
# Copy the pre-built JAR files directly into the vm-deploy directories with simplified names
95+
cp $(find eureka-server/target -type f -name "eureka-server*.jar" | grep -v original) vm-deploy/eureka-server/eureka-server.jar
96+
cp $(find api-gateway/target -type f -name "api-gateway*.jar" | grep -v original) vm-deploy/api-gateway/api-gateway.jar
97+
cp $(find recommendation-service/target -type f -name "recommendation-service*.jar" | grep -v original) vm-deploy/recommendation-service/recommendation-service.jar
98+
cp $(find statistics-service/target -type f -name "statistics-service*.jar" | grep -v original) vm-deploy/statistics-service/statistics-service.jar
99+
cp $(find user-tracking-service/target -type f -name "user-tracking-service*.jar" | grep -v original) vm-deploy/user-tracking-service/user-tracking-service.jar
100100
101-
# Copy the updated Dockerfiles into the respective service directories
102-
cp eureka-server/Dockerfile vm-deploy/eureka-server/
103-
cp api-gateway/Dockerfile vm-deploy/api-gateway/
104-
cp recommendation-service/Dockerfile vm-deploy/recommendation-service/
105-
cp statistics-service/Dockerfile vm-deploy/statistics-service/
106-
cp user-tracking-service/Dockerfile vm-deploy/user-tracking-service/
101+
# Use the simplified Dockerfiles in the vm-deploy directories
102+
cat > vm-deploy/eureka-server/Dockerfile << 'EOF'
103+
FROM openjdk:8-jre-slim
104+
WORKDIR /app
105+
COPY eureka-server.jar app.jar
106+
EXPOSE 8761
107+
ENTRYPOINT ["java", "-jar", "app.jar"]
108+
EOF
109+
110+
cat > vm-deploy/api-gateway/Dockerfile << 'EOF'
111+
FROM openjdk:8-jre-slim
112+
WORKDIR /app
113+
COPY api-gateway.jar app.jar
114+
EXPOSE 8080
115+
ENTRYPOINT ["java", "-jar", "app.jar"]
116+
EOF
117+
118+
cat > vm-deploy/recommendation-service/Dockerfile << 'EOF'
119+
FROM openjdk:8-jre-slim
120+
WORKDIR /app
121+
COPY recommendation-service.jar app.jar
122+
EXPOSE 8082
123+
ENTRYPOINT ["java", "-jar", "app.jar"]
124+
EOF
125+
126+
cat > vm-deploy/statistics-service/Dockerfile << 'EOF'
127+
FROM openjdk:8-jre-slim
128+
WORKDIR /app
129+
COPY statistics-service.jar app.jar
130+
EXPOSE 8083
131+
ENTRYPOINT ["java", "-jar", "app.jar"]
132+
EOF
133+
134+
cat > vm-deploy/user-tracking-service/Dockerfile << 'EOF'
135+
FROM openjdk:8-jre-slim
136+
WORKDIR /app
137+
COPY user-tracking-service.jar app.jar
138+
EXPOSE 8084
139+
ENTRYPOINT ["java", "-jar", "app.jar"]
140+
EOF
107141
108142
echo "Verifying copied files:"
109143
ls -la vm-deploy/*/
@@ -169,15 +203,17 @@ jobs:
169203
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"
170204
scp -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa vm-deploy/.env opc@${{ secrets.ORACLE_VM_IP }}:"~/music-analytics/vm-deploy/.env"
171205
172-
# On the remote VM: log in to the Docker registry, build images for each service, adjust docker-compose, and deploy containers
206+
# On the remote VM: log in to the Docker registry, build images for each service, and deploy containers
173207
ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa opc@${{ secrets.ORACLE_VM_IP }} "cd ~/music-analytics/vm-deploy && \
174208
echo 'Logging in to Docker registry...' && \
175209
echo \"${{ secrets.OCI_AUTH_TOKEN }}\" | docker login ${{ secrets.OCI_REGISTRY }} -u ${{ secrets.OCI_USERNAME }} --password-stdin && \
176210
echo 'Stopping and removing existing containers if any...' && \
177211
docker ps -q | xargs -r docker stop && docker ps -aq | xargs -r docker rm && \
178212
echo 'Building Docker images locally...' && \
179213
for service in eureka-server api-gateway recommendation-service statistics-service user-tracking-service; do \
180-
docker build -t music-analytics/\$service ./\$service || exit 1; \
214+
cd \$service && \
215+
docker build -t music-analytics/\$service . || exit 1; \
216+
cd .. ; \
181217
done && \
182218
echo 'Fixing docker-compose file (removing version attribute)...' && \
183219
sed -i '/^version:/d' docker-compose.yml && \

vm-deploy/eureka-server/Dockerfile

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,5 @@
1-
# Build stage
2-
FROM maven:3.8.5-openjdk-8-slim AS build
3-
WORKDIR /app
4-
COPY eureka-server.jar app.jar
5-
6-
# Runtime stage
71
FROM openjdk:8-jre-slim
82
WORKDIR /app
9-
10-
# Install wget and curl for health check
11-
RUN apt-get update && apt-get install -y wget curl && rm -rf /var/lib/apt/lists/*
12-
13-
# Copy JAR from build stage
14-
COPY --from=build /app/app.jar /app.jar
15-
16-
# Create non-root user
17-
RUN groupadd -r spring && useradd -r -g spring spring
18-
RUN chown spring:spring /app.jar
19-
20-
# Set proper permissions
21-
USER spring:spring
22-
23-
# Expose port
3+
COPY eureka-server.jar app.jar
244
EXPOSE 8761
25-
26-
# Configure health check
27-
HEALTHCHECK --interval=30s --timeout=10s --start-period=120s --retries=5 \
28-
CMD wget -q --spider http://127.0.0.1:8761/actuator/health || exit 1
29-
30-
# Use more memory and enable debug options
31-
ENTRYPOINT ["java", "-Xms256m", "-Xmx512m", "-XX:+UseContainerSupport", "-XX:MaxRAMPercentage=75.0", "-Dspring.profiles.active=docker", "-jar", "/app.jar"]
5+
ENTRYPOINT ["java", "-jar", "app.jar"]

0 commit comments

Comments
 (0)