-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
51 lines (36 loc) · 1.21 KB
/
Dockerfile
File metadata and controls
51 lines (36 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# -- Stage 1: Builder -- #
FROM rust:slim AS builder
WORKDIR /usr/src/lumisync
RUN apt-get update && apt-get install -y \
pkg-config \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
COPY . .
RUN cargo build --release --package lumisync_server && \
cargo install sqlx-cli && \
sqlx database create --database-url sqlite:file:lumisync.db
# -- Stage 2: Runtime -- #
FROM debian:bookworm-slim
ARG HOST=${HOST:-0.0.0.0}
ARG PORT=${PORT:-3000}
ARG RUN_MODE=${RUN_MODE:-production}
ARG CONFIG_PATH=${CONFIG_PATH:-/etc/lumisync/production.toml}
WORKDIR /opt/lumisync
RUN apt-get update && apt-get install -y \
ca-certificates \
libssl3 \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/lib/lumisync && chmod 777 /var/lib/lumisync
RUN mkdir -p /etc/lumisync
RUN printf '[server]\nhost = "%s"\nport = %s\n\n[database]\nurl = "sqlite:/var/lib/lumisync/lumisync.db"\n' \
"${HOST}" "${PORT}" > /etc/lumisync/production.toml
COPY --from=builder \
/usr/src/lumisync/target/release/lumisync_server \
/usr/local/bin/
COPY --from=builder \
/usr/src/lumisync/lumisync.db \
/var/lib/lumisync/lumisync.db
EXPOSE $PORT
ENV RUN_MODE=${RUN_MODE}
ENV CONFIG_PATH=${CONFIG_PATH}
CMD ["lumisync_server"]