Skip to content

Commit c7288c2

Browse files
feat: Add health checks and Docker registry commands to Makefile and Dockerfiles
1 parent 524a2de commit c7288c2

File tree

3 files changed

+65
-1
lines changed

3 files changed

+65
-1
lines changed

Dockerfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,7 @@ LABEL maintainer="developerkunal" \
7070
org.opencontainers.image.vendor="developerkunal" \
7171
org.opencontainers.image.licenses="MIT" \
7272
org.opencontainers.image.source="https://github.com/developerkunal/OpenMorph"
73+
74+
# Health check
75+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
76+
CMD ["/usr/local/bin/openmorph", "--version"] || exit 1

Dockerfile.dev

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,25 @@ RUN apk add --no-cache \
3838
# Install swagger-cli globally
3939
RUN npm install -g @apidevtools/swagger-cli
4040

41+
# Create non-root user for security
42+
RUN addgroup -g 1001 -S openmorph && \
43+
adduser -u 1001 -S openmorph -G openmorph
44+
4145
# Copy the binary
4246
COPY --from=builder /build/openmorph /usr/local/bin/openmorph
4347

4448
# Make it executable
4549
RUN chmod +x /usr/local/bin/openmorph
4650

51+
# Switch to non-root user
52+
USER openmorph
53+
4754
# Create workspace directory
4855
WORKDIR /workspace
4956

57+
# Health check
58+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
59+
CMD ["/usr/local/bin/openmorph", "--version"] || exit 1
60+
5061
# Set up shell
5162
CMD ["/bin/bash"]

Makefile

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ help:
5656
@echo " docker-compose-ci Run CI/CD simulation"
5757
@echo " docker-clean Clean Docker images and system"
5858
@echo " docker-all Build and test all Docker images"
59+
@echo " docker-tag Tag images for registry push"
60+
@echo " docker-login Login to GitHub Container Registry"
61+
@echo " docker-push Push tagged images to registry"
62+
@echo " docker-push-override Build and push images (overrides existing version)"
5963
@echo ""
6064
@echo "Utilities:"
6165
@echo " clean Clean build artifacts"
@@ -190,7 +194,7 @@ docker-build:
190194

191195
docker-test:
192196
@echo "Testing Docker images..."
193-
./scripts/healthcheck.sh || true
197+
docker run --rm -v $(PWD)/scripts:/scripts openmorph:dev /scripts/healthcheck.sh || true
194198
docker run --rm openmorph:latest --version
195199
docker run --rm openmorph:distroless --version
196200
@echo "Creating test files..."
@@ -227,3 +231,48 @@ docker-clean:
227231

228232
docker-all: docker-build docker-test
229233
@echo "Docker build and test complete"
234+
235+
# Docker registry commands
236+
docker-tag:
237+
@echo "Tagging Docker images for registry..."
238+
docker tag openmorph:latest ghcr.io/developerkunal/openmorph:v$(VERSION)
239+
docker tag openmorph:latest ghcr.io/developerkunal/openmorph:latest
240+
docker tag openmorph:latest ghcr.io/developerkunal/openmorph:v$(shell echo $(VERSION) | cut -d. -f1)
241+
docker tag openmorph:latest ghcr.io/developerkunal/openmorph:v$(shell echo $(VERSION) | cut -d. -f1-2)
242+
docker tag openmorph:distroless ghcr.io/developerkunal/openmorph:v$(VERSION)-distroless
243+
docker tag openmorph:dev ghcr.io/developerkunal/openmorph:v$(VERSION)-dev
244+
@echo "✅ Images tagged for ghcr.io/developerkunal/openmorph"
245+
246+
docker-login:
247+
@echo "Logging into GitHub Container Registry..."
248+
@echo "Make sure you have a GitHub token with write:packages permission"
249+
@echo "Run: echo \$$GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin"
250+
@echo "Or use: docker login ghcr.io"
251+
docker login ghcr.io
252+
253+
docker-push: docker-tag
254+
@echo "Pushing Docker images to GitHub Container Registry..."
255+
docker push ghcr.io/developerkunal/openmorph:v$(VERSION)
256+
docker push ghcr.io/developerkunal/openmorph:latest
257+
docker push ghcr.io/developerkunal/openmorph:v$(shell echo $(VERSION) | cut -d. -f1)
258+
docker push ghcr.io/developerkunal/openmorph:v$(shell echo $(VERSION) | cut -d. -f1-2)
259+
docker push ghcr.io/developerkunal/openmorph:v$(VERSION)-distroless
260+
docker push ghcr.io/developerkunal/openmorph:v$(VERSION)-dev
261+
@echo "✅ All images pushed successfully!"
262+
263+
docker-push-override: docker-build docker-tag
264+
@echo "🚨 OVERRIDING existing v$(VERSION) images with security fixes..."
265+
@echo "This will replace the existing images in the registry"
266+
@read -p "Are you sure you want to override v$(VERSION)? (y/N): " confirm; \
267+
if [ "$$confirm" = "y" ] || [ "$$confirm" = "Y" ]; then \
268+
echo "Pushing images..."; \
269+
docker push ghcr.io/developerkunal/openmorph:v$(VERSION); \
270+
docker push ghcr.io/developerkunal/openmorph:latest; \
271+
docker push ghcr.io/developerkunal/openmorph:v$(shell echo $(VERSION) | cut -d. -f1); \
272+
docker push ghcr.io/developerkunal/openmorph:v$(shell echo $(VERSION) | cut -d. -f1-2); \
273+
docker push ghcr.io/developerkunal/openmorph:v$(VERSION)-distroless; \
274+
docker push ghcr.io/developerkunal/openmorph:v$(VERSION)-dev; \
275+
echo "✅ v$(VERSION) images overridden with security fixes!"; \
276+
else \
277+
echo "❌ Push cancelled"; \
278+
fi

0 commit comments

Comments
 (0)