Compare commits

...

2 Commits

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
.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"
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]]
name = "either"
version = "1.8.1"
@ -438,7 +426,6 @@ dependencies = [
"anyhow",
"axum",
"dotenvy",
"dotenvy_macro",
"env_logger",
"log",
"magick_rust",

View File

@ -3,16 +3,18 @@ edition = "2021"
name = "liquid-rescale-api"
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]
anyhow = "1.0.70"
axum = {version = "0.6", features = ["multipart", "macros"]}
dotenvy = "0.15.7"
dotenvy_macro = "0.15.7"
env_logger = "0.10.0"
log = "0.4.17"
magick_rust = "0.17.0"
serde = { version = "1.0.159", features = ["derive"] }
serde = {version = "1.0.159", features = ["derive"]}
serde_json = "1.0.95"
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 utilities;
use dotenvy_macro::dotenv;
use router::create_router;
use std::net::SocketAddr;
pub async fn run() {
let port = dotenv!("PORT");
pub async fn run(port: String) {
let app = create_router();
let address = SocketAddr::from(([0, 0, 0, 0], port.parse().unwrap()));

View File

@ -5,7 +5,8 @@ use log::info;
#[tokio::main]
async fn main() {
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();
info!("Starting app on {}", dotenvy::var("PORT").unwrap());
run().await;
info!("Starting app on {}", port);
run(port).await;
}