Update Dockerfile for multiarch image.
This commit is contained in:
parent
acf536b232
commit
962df33503
4 changed files with 105 additions and 15 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
target
|
||||
.idea
|
||||
.idea
|
||||
assets/index.css
|
39
Dockerfile
39
Dockerfile
|
@ -1,7 +1,15 @@
|
|||
# Build image
|
||||
FROM docker.io/rust:alpine AS build
|
||||
FROM --platform=$BUILDPLATFORM ghcr.io/blackdex/rust-musl:x86_64-musl-stable as build_amd64
|
||||
FROM --platform=$BUILDPLATFORM ghcr.io/blackdex/rust-musl:aarch64-musl-stable as build_arm64
|
||||
|
||||
RUN apk add --no-cache musl-dev
|
||||
# Build image
|
||||
FROM --platform=$BUILDPLATFORM build_${TARGETARCH} as build
|
||||
|
||||
COPY --from=xx / /
|
||||
ARG TARGETARCH
|
||||
ARG TARGETVARIANT
|
||||
ARG TARGETPLATFORM
|
||||
|
||||
RUN echo "export CARGO_TARGET=${RUST_MUSL_CROSS_TARGET}" > /env-cargo
|
||||
|
||||
WORKDIR /usr/src
|
||||
|
||||
|
@ -10,18 +18,30 @@ RUN cargo new homepage
|
|||
|
||||
WORKDIR /usr/src/homepage
|
||||
|
||||
RUN source /env-cargo && \
|
||||
rustup target add "${CARGO_TARGET}"
|
||||
|
||||
COPY Cargo.* ./
|
||||
|
||||
|
||||
# Dummy build to cache dependencies
|
||||
RUN cargo build --release
|
||||
RUN source /env-cargo && \
|
||||
cargo build --release --target "${CARGO_TARGET}"
|
||||
|
||||
RUN curl -Lo tailwindcss https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64 && \
|
||||
chmod +x tailwindcss
|
||||
|
||||
COPY src ./src
|
||||
|
||||
COPY templates ./templates
|
||||
|
||||
# Build the actual app
|
||||
RUN touch src/main.rs && \
|
||||
cargo build --release
|
||||
source /env-cargo && \
|
||||
cargo install --path . --target "${CARGO_TARGET}"
|
||||
|
||||
COPY tailwind.* ./
|
||||
|
||||
RUN ./tailwindcss -i tailwind.css -o index.css --minify
|
||||
|
||||
|
||||
|
||||
|
@ -40,8 +60,13 @@ USER homepage:homepage
|
|||
|
||||
EXPOSE 8080
|
||||
|
||||
COPY --from=build /usr/src/homepage/target/release/homepage /usr/local/bin/homepage
|
||||
COPY --from=build /root/.cargo/bin/homepage /usr/local/bin/homepage
|
||||
|
||||
COPY assets ./assets
|
||||
|
||||
# Copy CSS generated by Tailwind
|
||||
COPY --from=build /usr/src/homepage/index.css assets/
|
||||
|
||||
COPY services.toml .
|
||||
|
||||
ENTRYPOINT ["homepage"]
|
||||
|
|
71
services.toml
Normal file
71
services.toml
Normal file
|
@ -0,0 +1,71 @@
|
|||
[[services]]
|
||||
name = "Element"
|
||||
description = "Web client of Element, an instant messaging client implementing the Matrix protocol."
|
||||
domain = "element.viyurz.fr"
|
||||
image = "/assets/element.png"
|
||||
language = "TypeScript"
|
||||
repository_url = "https://github.com/element-hq/element-web"
|
||||
|
||||
[[services]]
|
||||
name = "EteBase"
|
||||
description = "Server for EteSync, an end-to-end encrypted contacts, calendars, tasks and notes provider."
|
||||
domain = "etebase.viyurz.fr"
|
||||
image = "/assets/etesync.png"
|
||||
language = "Python"
|
||||
repository_url = "https://github.com/etesync/server"
|
||||
|
||||
[[services]]
|
||||
name = "EteSync (Soon™)"
|
||||
description = "Web client of EteSync, an end-to-end encrypted contacts, calendars, tasks and notes provider."
|
||||
domain = "etesync.viyurz.fr"
|
||||
image = "/assets/etesync.png"
|
||||
language = "TypeScript"
|
||||
repository_url = "https://github.com/etesync/etesync-web"
|
||||
|
||||
[[services]]
|
||||
name = "HedgeDoc"
|
||||
description = "A real-time collaborative markdown editor."
|
||||
domain = "hedgedoc.viyurz.fr"
|
||||
image = "/assets/hedgedoc.png"
|
||||
language = "TypeScript"
|
||||
repository_url = "https://github.com/hedgedoc/hedgedoc"
|
||||
|
||||
[[services]]
|
||||
name = "Matrix"
|
||||
description = "Synapse homeserver implemeting the Matrix protocol, an open standard for real-time communication supporting encryption and VoIP."
|
||||
domain = "matrix.viyurz.fr"
|
||||
image = "/assets/matrix.png"
|
||||
language = "Python"
|
||||
repository_url = "https://github.com/element-hq/synapse"
|
||||
|
||||
[[services]]
|
||||
name = "SearXNG"
|
||||
description = "A privacy-respecting, hackable metasearch engine."
|
||||
domain = "searx.viyurz.fr"
|
||||
image = "/assets/searxng.png"
|
||||
language = "Python"
|
||||
repository_url = "https://github.com/searxng/searxng"
|
||||
|
||||
[[services]]
|
||||
name = "Stalwart Mail Server (Soon™)"
|
||||
description = "Secure & Modern All-in-One Mail Server (IMAP, JMAP, SMTP)."
|
||||
domain = "smtp.viyurz.fr"
|
||||
image = "/assets/mail-server.png"
|
||||
language = "Rust"
|
||||
repository_url = "https://github.com/stalwartlabs/mail-server"
|
||||
|
||||
[[services]]
|
||||
name = "Stump (Soon™)"
|
||||
description = "A comics, manga and digital book server with OPDS support (WIP)."
|
||||
domain = "stump.viyurz.fr"
|
||||
image = "/assets/stump.png"
|
||||
language = "Rust / TypeScript"
|
||||
repository_url = "https://github.com/stumpapp/stump"
|
||||
|
||||
[[services]]
|
||||
name = "Vaultwarden"
|
||||
description = "Rust rewrite of the Bitwarden server, a password management service."
|
||||
domain = "vw.viyurz.fr"
|
||||
image = "/assets/vaultwarden.png"
|
||||
language = "Rust"
|
||||
repository_url = "https://github.com/dani-garcia/vaultwarden"
|
|
@ -1,7 +0,0 @@
|
|||
[[services]]
|
||||
name = "My service"
|
||||
description = "My service description."
|
||||
domain = "myservice.viyurz.fr"
|
||||
image = "/assets/myservice.png"
|
||||
language = "MyLanguage"
|
||||
repository_url = "https://github.com/myservicerepository"
|
Loading…
Reference in a new issue