feat: first working alpine docker container of self

This commit is contained in:
Jack Wills
2022-09-05 13:07:44 +00:00
parent ef18047002
commit ed80a58fee
2 changed files with 35 additions and 91 deletions
+36 -92
View File
@@ -1,103 +1,47 @@
# FROM debian:bullseye-slim
# FROM
FROM alpine:latest
# FROM scratch
#############
## Builder ##
#############
# DOCKER_GUID=1000 \
# DOCKER_UID=1000 \
# DOCKER_TIME_CONT=America \
# DOCKER_TIME_CITY=New_York \
# ARG DOCKER_APP_USER=oxker \
# DOCKER_APP_GROUP=docker
FROM rust:1.63.0-slim as builder
# ENV TZ=${DOCKER_TIME_CONT}/${DOCKER_TIME_CITY}
WORKDIR /usr/src
# RUN apt-get update \
# && apt-get install -y ca-certificates wget \
# && update-ca-certificates \
# RUN groupadd ${DOCKER_APP_GROUP}
# RUN useradd --no-create-home --no-log-init ${DOCKER_APP_USER}
# && mkdir /healthcheck /logs \
# && chown ${DOCKER_APP_USER}:${DOCKER_APP_GROUP} /logs
# Create blank project
RUN USER=root cargo new oxker
WORKDIR /app
# We want dependencies cached, so copy those first.
COPY Cargo.toml Cargo.lock /usr/src/oxker/
# COPY --chown=${DOCKER_APP_USER}:${DOCKER_APP_GROUP} docker/healthcheck/health_api.sh /healthcheck
# Set the working directory
WORKDIR /usr/src/oxker
# Copy from local release destination
# COPY --chown=${DOCKER_APP_USER} target/release/oxker /app/
# COPY target/release/oxker .
# RUN mkdir app
COPY /target/x86_64-unknown-linux-musl/release/oxker ./
COPY ./start_oxker.sh ./
RUN chmod +x /app/start_oxker.sh
## Install target platform (Cross-Compilation) --> Needed for Alpine
RUN rustup target add x86_64-unknown-linux-musl
# Use an unprivileged user
# USER ${DOCKER_APP_USER}
ENV RUST_BACKTRACE=full
# ENTRYPOINT ["./oxker" ]
# CMD [ "./oxker"]
ENTRYPOINT ["/app/start_oxker.sh"]
# This is a dummy build to get the dependencies cached.
RUN cargo build --target x86_64-unknown-linux-musl --release
# docker run --rm -ti \
# --name=ctop \
# --volume /var/run/docker.sock:/var/run/docker.sock:ro \
# # quay.io/vektorlab/ctop:latest
# Now copy in the rest of the sources
COPY src /usr/src/oxker/src/
## Touch main.rs to prevent cached release build
RUN touch /usr/src/oxker/src/main.rs
# This is the actual application build.
RUN cargo build --target x86_64-unknown-linux-musl --release
#############
## Runtime ##
#############
FROM alpine:latest AS runtime
# Copy application binary from builder image
COPY --from=builder /usr/src/oxker/target/x86_64-unknown-linux-musl/release/oxker /usr/local/bin
COPY start_oxker.sh ./
RUN chmod +x /start_oxker.sh
# Run the application
ENTRYPOINT [ "./start_oxker.sh"]
# docker run --rm -it --volume /var/run/docker.sock:/var/run/docker.sock:ro oxker
# docker run --rm -it --volume /var/run/docker.sock:/var/run/docker.sock:ro ghcr.io/mrjackwills/oxker:latest
# could get arch, and then download appropoatley from github?
# FROM rust:latest as cargo-build
# WORKDIR /build
# ENV RUSTFLAGS="-C target-feature=+crt-static"
# COPY Cargo* ./build
# COPY src/ ./build
# RUN cargo build --release --target x86_64-unknown-linux-gnu
# #####################################
# #####################################
# FROM scratch
# COPY --from=cargo-build /build/target/x86_64-unknown-linux-gnu/release/oxker /oxker
# ENTRYPOINT [ "/oxker" ]
# FROM rust:latest AS build
# WORKDIR /oxker_build
# # Download the target for static linking.
# RUN rustup target add x86_64-unknown-linux-musl
# # Create a dummy project and build the app's dependencies.
# # If the Cargo.toml or Cargo.lock files have not changed,
# # we can use the docker build cache and skip these (typically slow) steps.
# RUN USER=root cargo new oxker --bin
# WORKDIR /oxker_build
# COPY Cargo.toml Cargo.lock ./
# # CMD ["sleep", "6000"]
# # RUN cargo build --release
# # Copy the source and build the application.
# COPY src ./src/
# RUN cargo install --target x86_64-unknown-linux-musl --path .
# # Copy the statically-linked binary into a scratch container.
# FROM scratch
# COPY --from=build /oxker_build/bin/oxker .
# # USER 1000
# CMD ["./oxker"]
# cross build --target x86_64-unknown-linux-musl --release
# rustup target add x86_64-unknown-linux-musl
# cargo build --release --target=x86_64-unknown-linux-musl
+3 -3
View File
@@ -1,7 +1,7 @@
#!/bin/sh
set -e
# No idea why this is sloving my issue, or even where the issue is originally coming from
sleep 1
# No idea why this is solving my issue, or even where the issue is originally coming from
sleep .1
exec ./oxker "$@"
exec /usr/local/bin/oxker "$@"