50 lines
1.1 KiB
Docker
50 lines
1.1 KiB
Docker
# --- Build ---
|
|
|
|
FROM golang:1.25.2-trixie AS build
|
|
WORKDIR /app
|
|
COPY . .
|
|
|
|
# Setup Compiler
|
|
RUN apt-get update
|
|
RUN apt-get install -y gcc wget tar
|
|
RUN rm -rf /var/lib/apt/lists/*
|
|
|
|
# Setup Tensorflow
|
|
RUN wget -O tensorflow.tar.gz -q https://storage.googleapis.com/tensorflow/versions/2.18.0/libtensorflow-cpu-linux-x86_64.tar.gz && \
|
|
tar -C /usr/local -xzf tensorflow.tar.gz && \
|
|
rm tensorflow.tar.gz
|
|
|
|
# Build Application
|
|
ENV CGO_ENABLED=1 \
|
|
CGO_CFLAGS="-I/usr/local/include" \
|
|
CGO_LDFLAGS="-L/usr/local/lib -ltensorflow"
|
|
|
|
RUN go build -o stickerboard.elf main.go
|
|
|
|
# --- Runtime ---
|
|
|
|
FROM debian:trixie-slim AS runtime
|
|
WORKDIR /app
|
|
RUN mkdir -p /data
|
|
|
|
# Install Dependencies
|
|
RUN apt-get update
|
|
RUN apt-get install -y ffmpeg
|
|
RUN rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy Application
|
|
COPY --from=build /usr/local/lib /usr/local/lib
|
|
COPY --from=build /app/resources ./resources
|
|
COPY --from=build /app/stickerboard.elf .
|
|
|
|
# Update Environment
|
|
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
|
|
ENV TF_CPP_MIN_LOG_LEVEL=2
|
|
ENV HTTP_ADDRESS="0.0.0.0:8080"
|
|
ENV DATA_DIRECTORY=/data
|
|
|
|
# Start Application
|
|
EXPOSE 8080
|
|
CMD ["./stickerboard.elf"]
|
|
|