12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- ARG BASE_IMAGE=docker.io/alpine:3.18.4
- ARG SOURCE_DIR_PATH=/switchbot-mqtt
- FROM $BASE_IMAGE as build
- RUN apk add --no-cache \
- cargo `
- gcc \
- git `
- glib-dev \
- jq `
- make \
- musl-dev \
- openssl-dev `
- py3-certifi `
- py3-pip `
- py3-virtualenv `
- python3-dev `
- rust `
- && adduser -S build
- USER build
- RUN pip3 install --user --no-cache-dir pipenv==2023.6.18
- ARG SOURCE_DIR_PATH
- COPY --chown=build:nobody Pipfile Pipfile.lock $SOURCE_DIR_PATH/
- WORKDIR $SOURCE_DIR_PATH
- ENV PIPENV_CACHE_DIR=/tmp/pipenv-cache \
- PIPENV_VENV_IN_PROJECT=yes-please \
- PATH=/home/build/.local/bin:$PATH
- RUN jq 'del(.default."switchbot-mqtt", .default."sanitized-package")' Pipfile.lock > Pipfile.lock~ \
- && mv Pipfile.lock~ Pipfile.lock \
- && pipenv install --deploy
- COPY --chown=build:nobody . $SOURCE_DIR_PATH
- RUN if ! git status; then export SETUPTOOLS_SCM_PRETEND_VERSION=0.0.0; fi \
- && pipenv install --deploy \
- && pipenv graph \
- && pipenv run pip freeze \
- && rm -rf .git/ $PIPENV_CACHE_DIR \
- && chmod -cR a+rX .
- USER 0
- RUN chown -R 0:0 $SOURCE_DIR_PATH
- USER build
- FROM $BASE_IMAGE
- RUN apk add --no-cache \
- glib \
- python3 \
- tini \
- && find / -xdev -type f -perm /u+s -exec chmod -c u-s {} \; \
- && find / -xdev -type f -perm /g+s -exec chmod -c g-s {} \;
- USER nobody
- ARG SOURCE_DIR_PATH
- COPY --from=build $SOURCE_DIR_PATH $SOURCE_DIR_PATH
- ARG VIRTUALENV_PATH=$SOURCE_DIR_PATH/.venv
- ENV PATH=$VIRTUALENV_PATH/bin:$PATH
- ENV MQTT_HOST ""
- ENV MQTT_PORT "1883"
- ENV MQTT_USERNAME ""
- ENV MQTT_PASSWORD ""
- ENTRYPOINT ["tini", "--"]
- CMD ["sh", "-c", "switchbot-mqtt --mqtt-host \"$MQTT_HOST\" --mqtt-port \"$MQTT_PORT\" --mqtt-username \"$MQTT_USERNAME\" --mqtt-password \"$MQTT_PASSWORD\""]
|