mirror of https://github.com/sfeakes/AqualinkD.git
106 lines
3.6 KiB
Docker
106 lines
3.6 KiB
Docker
#####################################
|
|
#
|
|
# Create AqualinkD container for release (includes AMD64 and ARM64 for >Pi4 with 64 bit os and Linux PC)
|
|
# Build container for buildx
|
|
# This should support building on any host platform, but only supports output platform of amd64 & arm64
|
|
#
|
|
# Enable multi platform
|
|
# docker buildx create --use --platform=linux/arm64,linux/amd64 --name multi-platform-builder
|
|
# docker buildx inspect --bootstrap
|
|
#
|
|
# Build
|
|
# docker buildx build --platform=linux/amd64,linux/arm64 --output=./crap --file /Dockerfile.test -t aqualinkd-test .
|
|
# docker buildx build --platform=linux/amd64,linux/arm64 --file Dockerfile.test --output type=docker -t aqualinkd-test .
|
|
# docker build --file Dockerfile.test --progress=plain -t aqualinkd-test .
|
|
#
|
|
# adding --progress=plain helps with debug
|
|
#
|
|
# Clean the build env and start again
|
|
# docker buildx prune
|
|
#
|
|
#
|
|
# docker build -f ./Dockerfile.buildrelease .
|
|
#
|
|
#####################################
|
|
|
|
|
|
# Starting with base debian:bookworm and installing build-essential seems to be quicker than starting with gcc:bookworm
|
|
#FROM --platform=$BUILDPLATFORM gcc:12-bookworm AS aqualinkd-build
|
|
FROM --platform=$BUILDPLATFORM debian:bookworm AS aqualinkd-build
|
|
|
|
ARG BUILDARCH
|
|
ARG TARGETARCH
|
|
|
|
# Print all buildx variables
|
|
RUN echo "Build Arch $BUILDARCH" && \
|
|
echo "Tagert OS $TARGETOS"
|
|
|
|
# Setup build env, using toolchain for all builds, even native, since make this Dockerfile cleaner
|
|
# and no need to use bash if statments.
|
|
# Need to be careful on install order, so using two commands
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
make \
|
|
curl \
|
|
gcc-aarch64-linux-gnu \
|
|
gcc-x86-64-linux-gnu
|
|
|
|
RUN dpkg --add-architecture arm64 && \
|
|
dpkg --add-architecture amd64 && \
|
|
apt-get update && \
|
|
apt-get install -y \
|
|
libsystemd-dev:arm64 \
|
|
libsystemd-dev:amd64
|
|
|
|
|
|
RUN mkdir /home/AqualinkD
|
|
WORKDIR /home/AqualinkD
|
|
|
|
|
|
ARG AQUALINKD_VERSION
|
|
RUN curl -sL "https://github.com/sfeakes/AqualinkD/archive/refs/tags/$AQUALINKD_VERSION.tar.gz" | tar xz --strip-components=1
|
|
# Get latest release
|
|
#RUN curl -sL $(curl -s https://api.github.com/repos/sfeakes/AqualinkD/releases/latest | grep "tarball_url" | cut -d'"' -f4) | tar xz --strip-components=1
|
|
|
|
|
|
# Make AqualinkD
|
|
RUN make clean && \
|
|
make container-$TARGETARCH;
|
|
|
|
#####################################
|
|
#
|
|
# Runtime container(s)
|
|
#
|
|
#####################################
|
|
|
|
FROM debian:bookworm-slim AS aqualinkd
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y cron curl socat
|
|
|
|
# Set cron to read local.d
|
|
RUN sed -i '/EXTRA_OPTS=.-l./s/^#//g' /etc/default/cron
|
|
|
|
#Add Open Container Initiative (OCI) annotations.
|
|
#See: https://github.com/opencontainers/image-spec/blob/main/annotations.md
|
|
|
|
LABEL org.opencontainers.image.title="AqualinkD"
|
|
LABEL org.opencontainers.image.url="https://hub.docker.com/repository/docker/sfeakes/aqualinkd/general"
|
|
LABEL org.opencontainers.image.source="https://github.com/sfeakes/AqualinkD"
|
|
LABEL org.opencontainers.image.documentation="https://github.com/sfeakes/AqualinkD"
|
|
LABEL org.opencontainers.image.version=$AQUALINKD_VERSION
|
|
|
|
EXPOSE 80/tcp
|
|
|
|
COPY --from=aqualinkd-build /home/AqualinkD/release/aqualinkd /usr/local/bin/aqualinkd
|
|
COPY --from=aqualinkd-build /home/AqualinkD/release/serial_logger /usr/local/bin/serial_logger
|
|
COPY --from=aqualinkd-build /home/AqualinkD/web/ /var/www/aqualinkd/
|
|
COPY --from=aqualinkd-build /home/AqualinkD/release/aqualinkd.conf /etc/aqualinkd.conf
|
|
|
|
COPY --from=aqualinkd-build /home/AqualinkD/docker/aqualinkd-docker.cmd /usr/local/bin/aqualinkd-docker
|
|
|
|
RUN chmod +x /usr/local/bin/aqualinkd-docker
|
|
|
|
CMD ["sh", "-c", "/usr/local/bin/aqualinkd-docker"]
|