parent
30aa7f7bde
commit
28b319c3c5
|
@ -0,0 +1,65 @@
|
|||
# === Build Stage ===
|
||||
FROM debian:bullseye-slim AS builder
|
||||
ENV IS_DOCKER TRUE
|
||||
|
||||
LABEL org.opencontainers.image.source https://github.com/JustKato/drive-health
|
||||
|
||||
# Install build dependencies and runtime dependencies
|
||||
RUN apt-get update && apt-get install -y \
|
||||
gcc \
|
||||
musl-dev \
|
||||
libsqlite3-dev \
|
||||
libsqlite3-0 \
|
||||
wget \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Manually install Go 1.21
|
||||
ENV GOLANG_VERSION 1.21.0
|
||||
RUN wget https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz -O go.tgz \
|
||||
&& tar -C /usr/local -xzf go.tgz \
|
||||
&& rm go.tgz
|
||||
ENV PATH /usr/local/go/bin:$PATH
|
||||
|
||||
# Set the environment variable for Go
|
||||
ENV GOPATH=/go
|
||||
ENV PATH=$GOPATH/bin:$PATH
|
||||
ENV GO111MODULE=on
|
||||
|
||||
# Create the directory and set it as the working directory
|
||||
WORKDIR /app
|
||||
|
||||
# Copy the Go files and download dependencies
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
# Copy the source from the current directory to the Working Directory inside the container
|
||||
COPY . .
|
||||
|
||||
# Build the Go app
|
||||
RUN go build -o drive-health
|
||||
|
||||
# Cleanup build dependencies to reduce image size
|
||||
RUN apt-get purge -y gcc musl-dev libsqlite3-dev wget \
|
||||
&& apt-get autoremove -y \
|
||||
&& apt-get clean
|
||||
|
||||
# === Final Stage ===
|
||||
FROM debian:bullseye-slim AS final
|
||||
|
||||
# Set the environment variable
|
||||
ENV IS_DOCKER TRUE
|
||||
|
||||
# Create the directory and set it as the working directory
|
||||
WORKDIR /app
|
||||
|
||||
# Copy only the necessary files from the builder stage
|
||||
COPY --from=builder /app/drive-health .
|
||||
|
||||
# Expose the necessary port
|
||||
EXPOSE 8080
|
||||
|
||||
# Volume for external data
|
||||
VOLUME [ "/data" ]
|
||||
|
||||
# Command to run the executable
|
||||
CMD ["./drive-health"]
|
Loading…
Reference in New Issue