From ab0166c5acfed57933b7a5fd83ebdc0551dab33a Mon Sep 17 00:00:00 2001 From: cupcakearmy Date: Sun, 2 May 2021 13:53:48 +0200 Subject: [PATCH] docker --- .dockerignore | 1 + Cargo.toml | 4 ++++ Dockerfile | 26 ++++++++++++++++++++++++++ docker-compose.yml | 5 +++++ src/main.rs | 3 +-- src/store.rs | 7 +++++-- 6 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..1de5659 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +target \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index 2be28f7..41391af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,10 @@ version = "1.0.0" authors = ["cupcakearmy "] edition = "2018" +[[bin]] +name = "cryptgeon" +path = "src/main.rs" + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b4e8b8a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:16-alpine as CLIENT + +WORKDIR /tmp +COPY ./client . + +RUN npm ci +RUN npm run build + +FROM rust:1.51-alpine as RUST + +WORKDIR /tmp +RUN apk add libc-dev openssl-dev alpine-sdk +COPY ./Cargo* . +COPY ./src ./src + +RUN cargo build --release + +FROM alpine + +WORKDIR /app +COPY --from=RUST /tmp/target/release/cryptgeon . +COPY --from=CLIENT /tmp/build ./client/build + +ENV MEMCACHE=memcached:11211 + +ENTRYPOINT [ "/app/cryptgeon" ] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 318927b..baabffc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,3 +6,8 @@ services: entrypoint: memcached -m 128 ports: - 11211:11211 + + app: + build: . + ports: + - 80:5000 diff --git a/src/main.rs b/src/main.rs index 0f6cd56..aee2c29 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,12 +13,11 @@ async fn main() -> std::io::Result<()> { App::new() .wrap(middleware::Compress::default()) .wrap(middleware::DefaultHeaders::default()) - // .wrap(middleware::NormalizePath::default()) .configure(note::init) .configure(client::init) .default_service(web::resource("").route(web::get().to(client::fallback_fn))) }) - .bind("127.0.0.1:5000")? + .bind("0.0.0.0:5000")? .run() .await } diff --git a/src/store.rs b/src/store.rs index 5eb9e73..681e143 100644 --- a/src/store.rs +++ b/src/store.rs @@ -3,8 +3,11 @@ use memcache; use crate::note::Note; lazy_static! { - static ref CLIENT: memcache::Client = - memcache::connect("memcache://127.0.0.1:11211?timeout=10&tcp_nodelay=true").unwrap(); + static ref CLIENT: memcache::Client = memcache::connect(format!( + "memcache://{}?timeout=10&tcp_nodelay=true", + std::env::var("MEMCACHE").unwrap_or("127.0.0.1:11211".to_string()) + )) + .unwrap(); } pub fn set(id: &String, note: &Note) {