#Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format. #Copyright (C) 2024 HTWKalender support@htwkalender.de #This program is free software: you can redistribute it and/or modify #it under the terms of the GNU Affero General Public License as published by #the Free Software Foundation, either version 3 of the License, or #(at your option) any later version. #This program is distributed in the hope that it will be useful, #but WITHOUT ANY WARRANTY; without even the implied warranty of #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #GNU Affero General Public License for more details. #You should have received a copy of the GNU Affero General Public License #along with this program. If not, see . # build stage FROM golang:alpine AS build WORKDIR /app # Copy the source from the current directory to the Working Directory inside the container COPY . ./ # download needed modules RUN apk add --no-cache --update go gcc g++ && \ go mod download && \ CGO_ENABLED=1 GOOS=linux go build -o /htwkalender # production stage FROM alpine:latest AS prod WORKDIR /htwkalender ARG USER=ical RUN adduser -Ds /bin/sh $USER && \ chown $USER:$USER ./ USER $USER RUN mkdir -p data # copies executable from build container COPY --chown=$USER:$USER --from=build /htwkalender ./ # Expose port 8090 to the outside world EXPOSE 8090 ENTRYPOINT ["./htwkalender", "serve"] FROM golang:1.21.6 AS dev # Set the Current Working Directory inside the container WORKDIR /htwkalender # Copy go mod and sum files COPY go.mod go.sum ./ RUN go mod download # Copy the source from the current directory to the Working Directory inside the container COPY *.go ./ COPY . . # Build the Go app RUN CGO_ENABLED=1 GOOS=linux go build -o /htwkalender # Expose port 8090 to the outside world EXPOSE 8090 # Entry point ENTRYPOINT ["./htwkalender", "serve"]