151 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
ARG BUILD_FROM
 | 
						|
ARG BUILD_DATE
 | 
						|
ARG BUILD_DESCRIPTION
 | 
						|
ARG BUILD_NAME
 | 
						|
ARG BUILD_REF
 | 
						|
ARG BUILD_REPOSITORY
 | 
						|
ARG BUILD_VERSION
 | 
						|
 | 
						|
#ARG HDDTEMP_VERSION
 | 
						|
 | 
						|
# hadolint ignore=DL3006
 | 
						|
FROM $BUILD_FROM as builder
 | 
						|
 | 
						|
SHELL ["/bin/bash", "-eo", "pipefail", "-c"]
 | 
						|
RUN apk add --no-cache make \
 | 
						|
    gcc libc-dev linux-headers build-base autoconf automake git \
 | 
						|
    python3-dev musl-dev poetry go lsblk eudev 
 | 
						|
 | 
						|
ARG BUILD_ARCH
 | 
						|
 | 
						|
RUN cd / && wget -q -O - "https://github.com/Netgear/wsdd2/archive/refs/heads/master.tar.gz" | tar zxvf - \
 | 
						|
    && cd wsdd2-master \ 
 | 
						|
    && wget -q -O - https://raw.githubusercontent.com/openwrt/packages/refs/heads/master/net/wsdd2/patches/010-gcc14.patch | patch -p1 \
 | 
						|
    && make
 | 
						|
 | 
						|
COPY rootfs /
 | 
						|
RUN cd /usr/local/bin/ && \
 | 
						|
    if [ "$BUILD_ARCH" == "armv7" ]; then \ 
 | 
						|
    export PIP_NO_BINARY="pyyaml" ; \
 | 
						|
    fi && \
 | 
						|
    poetry install 
 | 
						|
 | 
						|
# hadolint ignore=DL3006
 | 
						|
FROM ${BUILD_FROM}
 | 
						|
 | 
						|
# Set shell
 | 
						|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
 | 
						|
 | 
						|
# Environment variables
 | 
						|
ENV \
 | 
						|
    CARGO_NET_GIT_FETCH_WITH_CLI=true \
 | 
						|
    HOME="/root" \
 | 
						|
    LANG="C.UTF-8" \
 | 
						|
    PIP_DISABLE_PIP_VERSION_CHECK=1 \
 | 
						|
    PIP_FIND_LINKS=https://wheels.home-assistant.io/musllinux/ \
 | 
						|
    PIP_NO_CACHE_DIR=1 \
 | 
						|
    PIP_PREFER_BINARY=1 \
 | 
						|
    PS1="$(whoami)@$(hostname):$(pwd)$ " \
 | 
						|
    PYTHONDONTWRITEBYTECODE=1 \
 | 
						|
    PYTHONUNBUFFERED=1 \
 | 
						|
    S6_BEHAVIOUR_IF_STAGE2_FAILS=2 \
 | 
						|
    S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \
 | 
						|
    S6_CMD_WAIT_FOR_SERVICES=1 \
 | 
						|
    YARN_HTTP_TIMEOUT=1000000 \
 | 
						|
    TERM="xterm-256color"
 | 
						|
 | 
						|
# Wait more time to allow gracefull shutdown
 | 
						|
ENV S6_KILL_GRACETIME=30000
 | 
						|
ENV S6_SYNC_DISKS=1
 | 
						|
 | 
						|
# Setup base
 | 
						|
ARG BUILD_ARCH
 | 
						|
ARG CLI_VERSION
 | 
						|
RUN apk add --no-cache \
 | 
						|
    samba-common-tools \
 | 
						|
    samba-server \
 | 
						|
    samba-client \
 | 
						|
    dbus \
 | 
						|
    exfatprogs \
 | 
						|
    btrfs-progs \
 | 
						|
    xfsprogs \
 | 
						|
    udev \
 | 
						|
    eudev \
 | 
						|
    hwids-udev \
 | 
						|
    device-mapper-udev \
 | 
						|
    attr \
 | 
						|
    e2fsprogs \
 | 
						|
    util-linux \
 | 
						|
    e2fsprogs-extra \
 | 
						|
    avahi \
 | 
						|
    avahi-compat-libdns_sd \
 | 
						|
    avahi-tools \
 | 
						|
    curl \
 | 
						|
    mosquitto-clients \
 | 
						|
    openssh-client \
 | 
						|
    findmnt \
 | 
						|
    ntfs-3g-progs \
 | 
						|
    sysstat \
 | 
						|
    hdparm \
 | 
						|
    smartmontools \
 | 
						|
    wsdd \
 | 
						|
    udisks2 \
 | 
						|
    libcap \
 | 
						|
    hd-idle \
 | 
						|
    fuse3 \
 | 
						|
    py3-pip \
 | 
						|
    pipx \
 | 
						|
    poetry \
 | 
						|
    lsblk \
 | 
						|
    socat \
 | 
						|
    figlet
 | 
						|
 | 
						|
RUN if [ "$BUILD_ARCH" != "armv7" ]; then apk add --no-cache apfs-fuse;fi
 | 
						|
 | 
						|
# WSDD2
 | 
						|
COPY --from=builder /wsdd2-master/wsdd2 /usr/sbin
 | 
						|
 | 
						|
# SAMBANAS UTILS (POERTY VIRTUAL ENV)
 | 
						|
COPY --from=builder /root/.cache/pypoetry /root/.cache/pypoetry
 | 
						|
 | 
						|
# HA API
 | 
						|
RUN curl -Lso /usr/bin/ha "https://github.com/home-assistant/cli/releases/download/${CLI_VERSION}/ha_${BUILD_ARCH}" \
 | 
						|
    && chmod a+x /usr/bin/ha 
 | 
						|
 | 
						|
# SAMBA Config
 | 
						|
RUN  mkdir -p /var/lib/samba \
 | 
						|
    && touch \
 | 
						|
    /etc/samba/lmhosts \
 | 
						|
    /var/lib/samba/account_policy.tdb \
 | 
						|
    /var/lib/samba/registry.tdb \
 | 
						|
    /var/lib/samba/winbindd_idmap.tdb
 | 
						|
 | 
						|
# ENABLE FUSE APFS
 | 
						|
RUN ln -s /usr/sbin/apfs-fuse /usr/sbin/mount.apfs
 | 
						|
 | 
						|
# Copy data
 | 
						|
COPY rootfs /
 | 
						|
 | 
						|
HEALTHCHECK \
 | 
						|
    CMD smbclient -L '\\localhost' -U '%' -m SMB3
 | 
						|
 | 
						|
# Labels
 | 
						|
LABEL \
 | 
						|
    io.hass.name="${BUILD_NAME}" \
 | 
						|
    io.hass.description="${BUILD_DESCRIPTION}" \
 | 
						|
    io.hass.arch="${BUILD_ARCH}" \
 | 
						|
    io.hass.type="addon" \
 | 
						|
    io.hass.version=${BUILD_VERSION} \
 | 
						|
    maintainer="Lucio Tarantino <@dianlight>" \
 | 
						|
    org.opencontainers.image.title="${BUILD_NAME}" \
 | 
						|
    org.opencontainers.image.description="${BUILD_DESCRIPTION}" \
 | 
						|
    org.opencontainers.image.vendor="Home Assistant Dianlight Add-ons" \
 | 
						|
    org.opencontainers.image.authors="Lucio Tarantino <@dianlight>" \
 | 
						|
    org.opencontainers.image.licenses="MIT" \
 | 
						|
    org.opencontainers.image.url="https://github.com/dianlight/hassio-addons" \
 | 
						|
    org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \
 | 
						|
    org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \
 | 
						|
    org.opencontainers.image.created=${BUILD_DATE} \
 | 
						|
    org.opencontainers.image.revision=${BUILD_REF} \
 | 
						|
    org.opencontainers.image.version=${BUILD_VERSION}
 |