Files
HAddons/samba/Dockerfile
ai-dev e8681cdead test
2025-10-11 12:14:55 +02:00

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}