I wrote this arti warp server for running whois via TOR network, Arti is CLI tool which has arti_client
library inside for connecting the network, my main target to dockerize this for easy deploy to koyeb.com
- I used
docker init
to create Dockerfile and others and changed the implementation little bit because of some special dependencies
ARG RUST_VERSION=1.82.0
ARG APP_NAME=arti_whois
FROM rust:${RUST_VERSION}-alpine AS build
ARG APP_NAME
WORKDIR /app
# Install host build dependencies.
RUN apk add --no-cache clang lld musl-dev git openssl-dev openssl libssl3 libcrypto3 libgcrypt openssl-libs-static ca-certificates
RUN --mount=type=bind,source=src,target=src \
--mount=type=bind,source=Cargo.toml,target=Cargo.toml \
--mount=type=bind,source=Cargo.lock,target=Cargo.lock \
--mount=type=cache,target=/app/target/ \
--mount=type=cache,target=/usr/local/cargo/git/db \
--mount=type=cache,target=/usr/local/cargo/registry/ \
cargo build --locked --release && \
cp ./target/release/$APP_NAME /bin/server
FROM alpine:3.18 AS final
USER root
COPY --from=build /bin/server /bin/
EXPOSE 8016
ENV RUST_BACKTRACE=1
ENV RUST_LOG=debug
CMD ["/bin/server"]
apk add
part took a while to figure out because on every run, compile was failing with different error, I needed to install all the dev lib dependencies to the alpine linux
- Test with
docker compose up --build
until everything is fine. I was using curl for testing the appcurl "localhost:8016/whois?ip=1.1.1.1" -v
- Than
docker push ozkanpakdil/arti_whois
to push it to docker repository
Now the app is in the docker hub 🥳
Top comments (0)