docker-ha/hass/Dockerfile

42 lines
1.3 KiB
Docker

ARG HASS_VERSION=latest
FROM homeassistant/home-assistant:$HASS_VERSION
RUN apk add --update-cache zbar mysql-client \
&& rm -rf /var/cache/apk/*
# Check if root
# If running as root, remove setuid and setgid flags of everything
# Then add a hass user and make that the owner of /config
# Finally, make pip install to user folders
RUN python3 -c 'import os; assert os.geteuid() == 0, "Already non-root! Skip changing user"' \
&& find / -xdev -type f -perm /u+s -exec chmod -c u-s {} \; \
&& find / -xdev -type f -perm /g+s -exec chmod -c g-s {} \; \
&& adduser -D hass \
&& addgroup hass dialout \
&& chown hass /config \
&& mkdir -p ~hass/.config/pip \
&& chown hass ~hass/.config \
&& chown hass ~hass/.config/pip \
&& echo -e '[install]\nuser = yes' > ~hass/.config/pip/pip.conf \
&& mkdir -p ~hass/.local/lib \
&& chown hass ~hass/.local \
&& chown hass ~hass/.local/lib
COPY wait-for-db.sh /home/hass/wait-for-db.sh
RUN chmod +x /home/hass/wait-for-db.sh
USER hass
# Make /config persistent even if not mounted
VOLUME /config
# Make pip cache persistent
VOLUME /home/hass/.local/lib
WORKDIR /config
# Export default port for use with routers like traefik
EXPOSE 8123/tcp
CMD ["/home/hass/wait-for-db.sh", "python3", "-m", "homeassistant", "-v", "--config", "/config"]
HEALTHCHECK CMD curl http://localhost:8123/ || exit 1