Compare commits

...

2 Commits

Author SHA1 Message Date
63a4d7ac32 Docker 2023-04-08 17:38:51 +03:00
e548f1b268 Got rid of the dotenvy_macro package and docker preparation 2023-04-08 17:38:35 +03:00
9 changed files with 68 additions and 22 deletions

3
.dockerignore Normal file
View File

@ -0,0 +1,3 @@
target
.env
Dockerfile

3
.gitignore vendored
View File

@ -1,2 +1,3 @@
/target /target
.env .env
docker-compose.prod.yml

13
Cargo.lock generated
View File

@ -169,18 +169,6 @@ version = "0.15.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
[[package]]
name = "dotenvy_macro"
version = "0.15.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb0235d912a8c749f4e0c9f18ca253b4c28cfefc1d2518096016d6e3230b6424"
dependencies = [
"dotenvy",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]] [[package]]
name = "either" name = "either"
version = "1.8.1" version = "1.8.1"
@ -438,7 +426,6 @@ dependencies = [
"anyhow", "anyhow",
"axum", "axum",
"dotenvy", "dotenvy",
"dotenvy_macro",
"env_logger", "env_logger",
"log", "log",
"magick_rust", "magick_rust",

View File

@ -3,16 +3,18 @@ edition = "2021"
name = "liquid-rescale-api" name = "liquid-rescale-api"
version = "0.1.0" version = "0.1.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # This seems redundant, but it's necessary for Docker to work
[[bin]]
name = "liquid-rescale-api"
path = "src/main.rs"
[dependencies] [dependencies]
anyhow = "1.0.70" anyhow = "1.0.70"
axum = {version = "0.6", features = ["multipart", "macros"]} axum = {version = "0.6", features = ["multipart", "macros"]}
dotenvy = "0.15.7" dotenvy = "0.15.7"
dotenvy_macro = "0.15.7"
env_logger = "0.10.0" env_logger = "0.10.0"
log = "0.4.17" log = "0.4.17"
magick_rust = "0.17.0" magick_rust = "0.17.0"
serde = { version = "1.0.159", features = ["derive"] } serde = {version = "1.0.159", features = ["derive"]}
serde_json = "1.0.95" serde_json = "1.0.95"
tokio = {version = "1", features = ["macros", "rt-multi-thread"]} tokio = {version = "1", features = ["macros", "rt-multi-thread"]}

40
Dockerfile Normal file
View File

@ -0,0 +1,40 @@
FROM fedora:38 as build
ENV PKG_CONFIG_ALLOW_CROSS=1
RUN dnf install -y rust cargo ImageMagick-devel clang --setopt=install_weak_deps=False
ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse
WORKDIR /usr/src/liquid-rescale-api
# Download and compile deps
COPY Cargo.toml .
COPY Cargo.lock .
COPY docker_utils/dummy.rs .
# Change temporarely the path of the code
RUN sed -i 's|src/main.rs|dummy.rs|' Cargo.toml
# Build only deps
RUN cargo build --release
# Now return the file back to normal
RUN sed -i 's|dummy.rs|src/main.rs|' Cargo.toml
# Copy everything
COPY . .
# Add the wait script
ADD https://github.com/ufoscout/docker-compose-wait/releases/download/2.2.1/wait /wait
RUN chmod +x /wait
# Build our code
RUN cargo build --release
FROM fedora:38
RUN dnf install -y ImageMagick-devel --setopt=install_weak_deps=False \
&& dnf clean all \
&& rm -rf /var/cache/yum
COPY --from=build /usr/src/liquid-rescale-api/target/release/liquid-rescale-api /liquid-rescale-api/liquid-rescale-api
COPY --from=build /wait /wait
WORKDIR /liquid-rescale-api
CMD /wait && /liquid-rescale-api/liquid-rescale-api

13
docker-compose.yml Normal file
View File

@ -0,0 +1,13 @@
version: '3'
services:
liquid-rescale-api:
container_name: 'liquid-rescale-api'
environment:
PORT: 3021
ports:
- 3021:3021
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped

1
docker_utils/dummy.rs Normal file
View File

@ -0,0 +1 @@
fn main() {}

View File

@ -3,12 +3,10 @@ mod router;
mod routes; mod routes;
mod utilities; mod utilities;
use dotenvy_macro::dotenv;
use router::create_router; use router::create_router;
use std::net::SocketAddr; use std::net::SocketAddr;
pub async fn run() { pub async fn run(port: String) {
let port = dotenv!("PORT");
let app = create_router(); let app = create_router();
let address = SocketAddr::from(([0, 0, 0, 0], port.parse().unwrap())); let address = SocketAddr::from(([0, 0, 0, 0], port.parse().unwrap()));

View File

@ -5,7 +5,8 @@ use log::info;
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
dotenvy::dotenv().ok(); dotenvy::dotenv().ok();
let port = dotenvy::var("PORT").unwrap_or("3000".to_string());
env_logger::Builder::from_env(Env::default().default_filter_or("info")).init(); env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
info!("Starting app on {}", dotenvy::var("PORT").unwrap()); info!("Starting app on {}", port);
run().await; run(port).await;
} }