Merge pull request #13 from papauorg/feature/no-sudo

Avoid root when installing cbpi in docker container
This commit is contained in:
Alexander Vollkopf 2021-12-03 07:44:44 +01:00 committed by GitHub
commit 204b02106d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 18 deletions

View file

@ -3,7 +3,7 @@ RUN apk --no-cache add curl && mkdir /downloads
# Download installation files # Download installation files
RUN curl https://github.com/avollkopf/craftbeerpi4-ui/archive/main.zip -L -o ./downloads/cbpi-ui.zip RUN curl https://github.com/avollkopf/craftbeerpi4-ui/archive/main.zip -L -o ./downloads/cbpi-ui.zip
FROM python:3.7 FROM python:3.9
# Install dependencies # Install dependencies
RUN apt-get update \ RUN apt-get update \
@ -14,28 +14,43 @@ RUN apt-get install --no-install-recommends -y \
python3-pip \ python3-pip \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
RUN python -m pip install --upgrade pip setuptools wheel ENV VIRTUAL_ENV=/opt/venv
WORKDIR /cbpi
# Create non-root user working directory # Create non-root user working directory
RUN groupadd -g 1000 -r craftbeerpi \ RUN groupadd -g 1000 -r craftbeerpi \
&& useradd -u 1000 -r -s /bin/false -g craftbeerpi craftbeerpi \ && useradd -u 1000 -r -s /bin/false -g craftbeerpi craftbeerpi \
&& chown craftbeerpi:craftbeerpi /cbpi && mkdir /cbpi \
&& chown craftbeerpi:craftbeerpi /cbpi \
# Install craftbeerpi from source && mkdir -p $VIRTUAL_ENV \
COPY . /cbpi-src && chown -R craftbeerpi:craftbeerpi ${VIRTUAL_ENV}
RUN pip3 install --no-cache-dir /cbpi-src
# Install craftbeerpi-ui
COPY --from=download /downloads /downloads
RUN pip3 install --no-cache-dir /downloads/cbpi-ui.zip
# Clean up installation files
RUN rm -rf /downloads /cbpi-src
USER craftbeerpi USER craftbeerpi
RUN cbpi setup # create virtual environment
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel
# Install craftbeerpi requirements for better caching
COPY --chown=craftbeerpi ./requirements.txt /cbpi-src/
RUN pip3 install --no-cache-dir -r /cbpi-src/requirements.txt
# Install craftbeerpi from source
COPY --chown=craftbeerpi . /cbpi-src
RUN pip3 install --no-cache-dir /cbpi-src
# Install craftbeerpi-ui
COPY --from=download --chown=craftbeerpi /downloads /downloads
RUN pip3 install --no-cache-dir /downloads/cbpi-ui.zip
# Clean up installation files
USER root
RUN rm -rf /downloads /cbpi-src
USER craftbeerpi
WORKDIR /cbpi
RUN ["cbpi", "setup"]
EXPOSE 8000 EXPOSE 8000

View file

@ -13,6 +13,10 @@ pyfiglet==0.8.post1
pandas==1.1.5 pandas==1.1.5
shortuuid==1.0.1 shortuuid==1.0.1
tabulate==0.8.7 tabulate==0.8.7
numpy==1.20.3
cbpi4ui cbpi4ui
click click==7.1.2
importlib_metadata==4.8.2
asyncio-mqtt asyncio-mqtt
psutil==5.8.0
zipp>=0.5