Skip to content

Commit 11eb205

Browse files
committed
lighthouse-servicer real work, fix.
1 parent d8e0b23 commit 11eb205

6 files changed

Lines changed: 170 additions & 305 deletions

File tree

.github/workflows/lighthouse-service-ci-cd.yml

Lines changed: 43 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Set up JDK
2727
uses: actions/setup-java@v3
2828
with:
29-
java-version: "21"
29+
java-version: "17"
3030
distribution: "temurin"
3131

3232
- name: Cache Maven packages
@@ -81,18 +81,27 @@ jobs:
8181
key: ${{ secrets.SSH_PRIVATE_KEY }}
8282
script: |
8383
mkdir -p /opt/craftpilot/tmp/netty
84+
mkdir -p /opt/craftpilot/tmp/lighthouse
8485
85-
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/lighthouse-service:latest-arm64
86+
# Stop and remove previous container
87+
echo "Stopping and removing previous container if it exists"
8688
docker stop lighthouse-service || true
8789
docker rm lighthouse-service || true
8890
91+
# Pull the latest image with explicit platform for ARM64
92+
echo "Pulling latest ARM64 image"
93+
docker pull --platform linux/arm64 ${{ secrets.DOCKERHUB_USERNAME }}/lighthouse-service:latest-arm64
94+
95+
echo "Starting container with proper environment variables"
8996
if [[ "${{ github.event.inputs.environment }}" == "debug" ]]; then
9097
docker run -d \
98+
--platform linux/arm64 \
9199
--name lighthouse-service \
92100
--network craftpilot-network \
93101
--restart unless-stopped \
94102
-p 8085:8085 \
95103
-p 5008:5008 \
104+
-v /opt/craftpilot/tmp/lighthouse:/tmp/lighthouse \
96105
-v /opt/craftpilot/tmp/netty:/tmp/netty \
97106
-e SPRING_PROFILES_ACTIVE=prod \
98107
-e EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://craftpilot:13579ada@eureka-server:8761/eureka/ \
@@ -105,12 +114,14 @@ jobs:
105114
-e LIGHTHOUSE_QUEUE_NAME=lighthouse-jobs \
106115
-e LIGHTHOUSE_RESULTS_PREFIX=lighthouse-results: \
107116
-e LIGHTHOUSE_REDIS_CONNECTION_MAX_ATTEMPTS=10 \
108-
-e LIGHTHOUSE_REDIS_CONNECTION_RETRY_DELAY_MS=2000 \
109-
-e LIGHTHOUSE_CLI_PATH=lighthouse \
110-
-e LIGHTHOUSE_USE_NPX=false \
111-
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin/node:/usr/local/bin/npm \
117+
-e LIGHTHOUSE_REDIS_CONNECTION_RETRY_DELAY_MS=5000 \
118+
-e LIGHTHOUSE_CLI_PATH=/usr/local/bin/lighthouse \
119+
-e LIGHTHOUSE_WORKER_COUNT=2 \
120+
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
112121
-e NODE_PATH=/usr/local/lib/node_modules \
113122
-e PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
123+
-e CHROME_PATH=/usr/bin/chromium \
124+
-e LIGHTHOUSE_CHROMIUM_PATH=/usr/bin/chromium \
114125
-e MANAGEMENT_ENDPOINTS_WEB_BASE_PATH=/actuator \
115126
-e "MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE=health,metrics,info,loggers" \
116127
-e MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILS=always \
@@ -124,20 +135,21 @@ jobs:
124135
-e LOGGING_LEVEL_IO_LETTUCE=DEBUG \
125136
-e "JAVA_TOOL_OPTIONS=-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 -Dio.netty.noNative=true -Dio.netty.tryReflectionSetAccessible=true -Dnetty.native.workdir=/tmp/netty -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5008" \
126137
--ulimit nofile=65536:65536 \
127-
--cap-drop ALL \
128138
--security-opt no-new-privileges \
129139
--health-cmd="curl -f http://localhost:8085/health || exit 1" \
130140
--health-interval=30s \
131-
--health-timeout=10s \
141+
--health-timeout=20s \
132142
--health-retries=5 \
133143
--health-start-period=120s \
134144
${{ secrets.DOCKERHUB_USERNAME }}/lighthouse-service:latest-arm64
135145
else
136146
docker run -d \
147+
--platform linux/arm64 \
137148
--name lighthouse-service \
138149
--network craftpilot-network \
139150
--restart unless-stopped \
140151
-p 8085:8085 \
152+
-v /opt/craftpilot/tmp/lighthouse:/tmp/lighthouse \
141153
-v /opt/craftpilot/tmp/netty:/tmp/netty \
142154
-e SPRING_PROFILES_ACTIVE=prod \
143155
-e EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://craftpilot:13579ada@eureka-server:8761/eureka/ \
@@ -150,12 +162,14 @@ jobs:
150162
-e LIGHTHOUSE_QUEUE_NAME=lighthouse-jobs \
151163
-e LIGHTHOUSE_RESULTS_PREFIX=lighthouse-results: \
152164
-e LIGHTHOUSE_REDIS_CONNECTION_MAX_ATTEMPTS=10 \
153-
-e LIGHTHOUSE_REDIS_CONNECTION_RETRY_DELAY_MS=2000 \
154-
-e LIGHTHOUSE_CLI_PATH=lighthouse \
155-
-e LIGHTHOUSE_USE_NPX=false \
156-
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin/node:/usr/local/bin/npm \
165+
-e LIGHTHOUSE_REDIS_CONNECTION_RETRY_DELAY_MS=5000 \
166+
-e LIGHTHOUSE_CLI_PATH=/usr/local/bin/lighthouse \
167+
-e LIGHTHOUSE_WORKER_COUNT=2 \
168+
-e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
157169
-e NODE_PATH=/usr/local/lib/node_modules \
158170
-e PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
171+
-e CHROME_PATH=/usr/bin/chromium \
172+
-e LIGHTHOUSE_CHROMIUM_PATH=/usr/bin/chromium \
159173
-e MANAGEMENT_ENDPOINTS_WEB_BASE_PATH=/actuator \
160174
-e "MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE=health,metrics,info" \
161175
-e MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILS=always \
@@ -167,25 +181,31 @@ jobs:
167181
-e LOGGING_LEVEL_COM_CRAFTPILOT=INFO \
168182
-e "JAVA_TOOL_OPTIONS=-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 -Dio.netty.noNative=true -Dio.netty.tryReflectionSetAccessible=true -Dnetty.native.workdir=/tmp/netty" \
169183
--ulimit nofile=65536:65536 \
170-
--cap-drop ALL \
171184
--security-opt no-new-privileges \
172185
--health-cmd="curl -f http://localhost:8085/health || exit 1" \
173186
--health-interval=30s \
174-
--health-timeout=10s \
187+
--health-timeout=20s \
175188
--health-retries=5 \
176189
--health-start-period=120s \
177190
${{ secrets.DOCKERHUB_USERNAME }}/lighthouse-service:latest-arm64
178191
fi
179192
180-
# Container başlatıldıktan hemen sonra node ve npm versiyonlarını kontrol et
181-
echo "Checking Node.js and NPM versions in container..."
182-
docker exec lighthouse-service node --version || echo "Node.js not found"
183-
docker exec lighthouse-service npm --version || echo "NPM not found"
184-
docker exec lighthouse-service which lighthouse || echo "Lighthouse CLI not found"
185-
docker exec lighthouse-service ls -la /usr/local/bin/ || echo "Cannot list /usr/local/bin"
193+
# Verify available tools in the container
194+
echo "Waiting for container to start (10 seconds)..."
195+
sleep 10
196+
197+
echo "Verifying critical tools in container..."
198+
docker exec lighthouse-service java -version || echo "Java check failed"
199+
docker exec lighthouse-service node --version || echo "Node.js check failed"
200+
docker exec lighthouse-service npm --version || echo "NPM check failed"
201+
docker exec lighthouse-service which lighthouse || echo "Lighthouse CLI check failed"
202+
docker exec lighthouse-service lighthouse --version || echo "Lighthouse version check failed"
203+
204+
echo "Validating container environment variables..."
205+
docker exec lighthouse-service printenv | grep -E "PATH|NODE_PATH|JAVA_HOME|CHROME"
186206
187207
echo "=== Waiting for service startup ==="
188-
max_attempts=20
208+
max_attempts=30
189209
counter=0
190210
success=0
191211
@@ -195,7 +215,7 @@ jobs:
195215
# Container durumu kontrolü
196216
if ! docker ps --filter "name=lighthouse-service" --format '{{.Status}}' | grep -q "Up"; then
197217
echo "Container is not running anymore. Checking logs..."
198-
docker logs lighthouse-service
218+
docker logs lighthouse-service | tail -n 100
199219
exit 1
200220
fi
201221
@@ -223,7 +243,7 @@ jobs:
223243
fi
224244
225245
echo "Waiting for service to start... ($((counter + 1))/$max_attempts)"
226-
sleep 15
246+
sleep 10
227247
counter=$((counter + 1))
228248
done
229249

lighthouse-service/Dockerfile

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build stage - Maven ve Java kullanarak derleme
2-
FROM maven:3.9.5-eclipse-temurin-21 AS builder
2+
FROM maven:3.9.5-eclipse-temurin-17 AS builder
33
WORKDIR /app
44

55
# POM dosyasını kopyala
@@ -14,29 +14,28 @@ COPY src ./src
1414
# Uygulamayı derle
1515
RUN mvn clean package -DskipTests -B
1616

17-
# Final imaj - Alpine yerine tam Debian tabanlı imaj kullan
18-
FROM eclipse-temurin:21-jre
17+
# Final imaj - Debian tabanlı imaj
18+
FROM eclipse-temurin:17-jre
1919

2020
# Temel araçları kur
2121
RUN apt-get update && apt-get install -y \
2222
nodejs \
2323
npm \
2424
curl \
25-
chromium \
2625
wget \
2726
gnupg \
2827
procps \
2928
lsof \
29+
chromium \
3030
--no-install-recommends && \
31-
rm -rf /var/lib/apt/lists/*
32-
33-
# Java yolunun düzgün ayarlanması
34-
ENV JAVA_HOME=/opt/java/openjdk
35-
ENV PATH="${JAVA_HOME}/bin:${PATH}"
36-
37-
# Lighthouse CLI kurulumu
38-
RUN npm install -g lighthouse@11.1.0 && \
39-
npm cache clean --force
31+
# Node.js ve NPM sürümlerini kontrol et
32+
node --version && \
33+
npm --version && \
34+
# Lighthouse CLI kurulumu
35+
npm install -g lighthouse@11.1.0 && \
36+
npm cache clean --force && \
37+
# Lighthouse CLI'yı doğrula
38+
lighthouse --version
4039

4140
# Gerekli dizinleri oluştur
4241
RUN mkdir -p /tmp/lighthouse /home/appuser /tmp/netty
@@ -46,7 +45,9 @@ ENV NODE_PATH=/usr/local/lib/node_modules \
4645
CHROME_PATH=/usr/bin/chromium \
4746
LIGHTHOUSE_CHROMIUM_PATH=/usr/bin/chromium \
4847
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
49-
PATH="${PATH}:/usr/local/bin:/usr/bin"
48+
JAVA_HOME=/opt/java/openjdk \
49+
PATH="${JAVA_HOME}/bin:/usr/local/bin:/usr/bin:${PATH}" \
50+
SPRING_PROFILES_ACTIVE=prod
5051

5152
# Güvenlik için non-root kullanıcı oluştur
5253
RUN groupadd -r appuser && \
@@ -59,28 +60,28 @@ RUN chown appuser:appuser /app/app.jar
5960

6061
# Healthcheck script ekle
6162
COPY healthcheck.sh /app/healthcheck.sh
62-
RUN chmod +x /app/healthcheck.sh
63+
RUN chmod +x /app/healthcheck.sh && \
64+
chown appuser:appuser /app/healthcheck.sh
6365

6466
# Kurulumu doğrula
6567
RUN java -version && \
6668
node --version && \
6769
npm --version && \
68-
echo "Checking Chrome:" && \
6970
chromium --version || echo "Chromium version check failed" && \
70-
echo "Checking Lighthouse:" && \
7171
lighthouse --version && \
72-
echo "Checking JAR file:" && \
7372
ls -la /app/app.jar && \
74-
echo "Checking Java PATH:" && \
75-
which java
73+
which java && \
74+
which node && \
75+
which npm && \
76+
which lighthouse
7677

7778
# Non-root kullanıcıya geç
7879
USER appuser
7980
WORKDIR /app
8081
EXPOSE 8085
8182

8283
# Healthcheck yapılandır
83-
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 CMD [ "bash", "/app/healthcheck.sh" ]
84+
HEALTHCHECK --interval=30s --timeout=20s --start-period=90s --retries=3 CMD [ "bash", "/app/healthcheck.sh" ]
8485

8586
# Uygulamayı çalıştır
8687
CMD ["java", "-jar", "app.jar"]

0 commit comments

Comments
 (0)