1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # ---------------------------------------------------
- # Build Stage
- # ---------------------------------------------------
- # Use Alpine Linux 3.18 as the base image for the build stage
- FROM alpine:3.18 AS build
- # Update package list and install build dependencies
- RUN apk update && \
- apk add --no-cache \
- build-base zlib-dev
- # Set the working directory inside the container
- WORKDIR /civetweb
- # Copy source code and other necessary files into the container
- COPY src ./src/
- COPY include ./include/
- COPY Makefile ./
- COPY resources ./resources/
- COPY *.md ./
- # Build Civetweb with all features and install it into /app directory
- RUN make build && \
- make WITH_ALL=1 && \
- make install PREFIX=/app
- # ---------------------------------------------------
- # Image Stage
- # ---------------------------------------------------
- # Use Alpine Linux 3.18 as the base image for the final stage
- FROM alpine:3.18
- # Update package list and install runtime dependencies
- RUN apk update && \
- apk add --no-cache \
- libstdc++ zlib
- # Create a non-root user and group for running Civetweb
- RUN addgroup -S civetweb && adduser -S civetweb -G civetweb
- # Switch to the non-root user
- USER civetweb
- # Copy the built application from the build stage into this stage
- COPY --chown=civetweb:civetweb --from=build /app/ /app/
- # Expose port 8080 for the application
- EXPOSE 8080
- # Set the entry point for the container
- ENTRYPOINT [ "/app/bin/civetweb", "/app/etc/civetweb.conf" ]
|