浏览代码

[Build] Docker build support added

Signed-off-by: Slava Barinov <rayslava@gmail.com>
Slava Barinov 2 年之前
父节点
当前提交
d76035eb88
共有 3 个文件被更改,包括 27 次插入0 次删除
  1. 1 0
      Cargo.toml
  2. 22 0
      Dockerfile
  3. 4 0
      src/user.rs

+ 1 - 0
Cargo.toml

@@ -36,3 +36,4 @@ pkg-config = { version = "0.3", optional = true }
 default = [ "telegram" ]
 tv = [ "cc", "pkg-config" ]
 telegram = [ "teloxide", "log", "pretty_env_logger", "tokio", "tokio-stream", "derive_more", "thiserror", "futures", "anyhow" ]
+docker = []

+ 22 - 0
Dockerfile

@@ -0,0 +1,22 @@
+# Build
+FROM rust:1.74.0 AS builder
+WORKDIR /usr/src/
+RUN rustup target add x86_64-unknown-linux-gnu
+RUN apt update && apt install libssl-dev
+
+RUN USER=root cargo new receqif
+WORKDIR /usr/src/receqif
+COPY Cargo.toml Cargo.lock ./
+RUN cargo build --release --features "docker"
+
+COPY src ./src
+RUN cargo install --target x86_64-unknown-linux-gnu --features "docker" --path .
+
+# Bundle
+FROM gcr.io/distroless/cc-debian12
+COPY --from=builder /usr/local/cargo/bin/receqif /bin/receqif
+USER 1000
+ARG TELEGRAM_TOKEN
+ENV TELOXIDE_TOKEN=$TELEGRAM_TOKEN
+VOLUME ["/etc/receqif"]
+ENTRYPOINT ["/bin/receqif", "--telegram"]

+ 4 - 0
src/user.rs

@@ -17,8 +17,12 @@ pub struct User {
     db: PickleDb,
 }
 
+#[cfg(not(feature = "docker"))]
 pub const DEFAULT_DB_PATH: &str = "~/.config/receqif/";
 
+#[cfg(feature = "docker")]
+pub const DEFAULT_DB_PATH: &str = "/etc/receqif/";
+
 impl Drop for User {
     fn drop(&mut self) {
         self.db.set("catmap", &self.catmap).unwrap();