48 lines
1.2 KiB
Docker
48 lines
1.2 KiB
Docker
FROM debian:bookworm-slim AS build
|
|
|
|
ARG TARGETARCH
|
|
ENV ENV=production
|
|
WORKDIR /usr/src/app
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
gnupg \
|
|
ca-certificates \
|
|
&& mkdir -p /etc/apt/keyrings \
|
|
&& curl -fsSL https://packagecloud.io/84codes/crystal/gpgkey | gpg --dearmor > /etc/apt/trusted.gpg.d/84codes_crystal.gpg \
|
|
&& echo "deb [signed-by=/etc/apt/trusted.gpg.d/84codes_crystal.gpg] https://packagecloud.io/84codes/crystal/debian/ bookworm main" > /etc/apt/sources.list.d/84codes_crystal.list
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
crystal \
|
|
libssl-dev \
|
|
libyaml-dev \
|
|
libsqlite3-dev \
|
|
libevent-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY . .
|
|
|
|
RUN shards install --production
|
|
RUN shards build --release --no-debug --progress --stats
|
|
|
|
FROM debian:bookworm-slim AS runtime
|
|
|
|
ENV ENV=production
|
|
WORKDIR /usr/src/app
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
libssl3 \
|
|
libyaml-0-2 \
|
|
sqlite3 \
|
|
libevent-2.1-7 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN mkdir -p sqlite
|
|
|
|
COPY --from=build /usr/src/app/db db
|
|
COPY --from=build /usr/src/app/data data
|
|
COPY --from=build /usr/src/app/bin /usr/local/bin
|
|
|
|
EXPOSE 4000/tcp
|
|
CMD ["bit"]
|