Sign inSign up

itsnix/kenowatch

By itsnix

•Updated almost 2 years ago

A starlette image to deploy python code

Image
Languages & frameworks
Developer tools
0

3.5K

itsnix/kenowatch repository overview

FROM debian:bookworm-slim

ARG USERNAME=keno ARG USER_UID=102 ARG USER_GID=$USER_UID

⁠Create the user

RUN groupadd --system --gid $USER_GID $USERNAME
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
# # [Optional] Add sudo support. Omit if you don't need to install software after connecting. && apt-get update
&& apt-get install -y sudo
&& echo $USERNAME ALL=(root) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME
&& chmod 0440 /etc/sudoers.d/$USERNAME
&& savedAptMark="$savedAptMark sudo"

⁠RUN set -eux; \

⁠sudo curl --output /usr/share/keyrings/nginx-keyring.gpg https://unit.nginx.org/keys/nginx-keyring.gpg⁠ \

⁠&& echo "deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/⁠ bookworm unit" > /etc/apt/sources.list.d/unit.list \

⁠&& echo "deb-src [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/debian/⁠ bookworm unit" >> /etc/apt/sources.list.d/unit.list \

⁠&& apt update \

⁠&& apt-key add /usr/share/keyrings/nginx-keyring.gpg \

⁠&& apt install unit unit-dev unit-python3

⁠RUN set -eux; \

⁠apt-get update \

⁠&& apt-get install \

⁠dnsutils \

⁠net-tools \

⁠# && dpkg --purge \

⁠# apt-utils \

⁠# && rm -rf /usr/share/keyrings/nginx-keyring.gpg \

⁠# && rm -rf /etc/apt/sources.list.d/unit.list \

⁠&& apt update \

⁠&& apt-get update

RUN set -eux;
apt-get update && apt-get install -y --no-install-recommends
python3.12
libpython3.12-minimal
libpython3.12-stdlib
python3.12-minimal
libpython3.12-dev
git
python3.12-venv
libsodium-dev
libkrb5-dev
libsnappy-dev
build-essential
netcat-openbsd

USER $USERNAME

RUN set -eux;
/usr/bin/python3.12 -m venv /home/$USERNAME/.python;
. /home/$USERNAME/.python/bin/activate;
python -m pip install --upgrade pip setuptools wheel;

WORKDIR /app/

RUN set -ex;
echo "change_me to upgrade starlette doy";
git clone https://github.com/nixroxursox/starlette.git⁠;
cd starlette;
git clone https://github.com/nixroxursox/starlette-context.git⁠;
git pull origin master;

COPY requirements.txt /app/starlette/ COPY .bashrc /home/$USERNAME/ COPY starsessions.tar.gz /app/starlette/

USER $USERNAME

RUN set -ex;
cd /app/starlette
&& . /home/$USERNAME/.python/bin/activate;
python -m pip install -r requirements.txt;

RUN set -ex;
cd /app/starlette
&& . /home/$USERNAME/.python/bin/activate;
python -m pip install "pymongo[gssapi,aws,ocsp,snappy,zstd,encryption]";
tar -xzvf starsessions.tar.gz;
sudo rm -rf /app/starlette/starsessions.tar.gz

RUN set -eux;
sudo apt-get update

WORKDIR /app/website

CMD [ "/home/keno/.python/bin/gunicorn", "--bind", "unix:/tmp/keno.sock", "--config", "/app/website/libs/gunicorn.conf.py", "--access-logfile", "/proc/self/fd/1", "--error-logfile", "/proc/self/fd/2", "--log-level", "trace", "--worker-class", "uvicorn_worker.UvicornWorker ", "--backlog", "1024", "--threads", "24", "app:app" ]

Tag summary

Content type

Image

Digest

sha256:fcc4c5de2…

Size

517.8 MB

Last updated

almost 2 years ago

docker pull itsnix/kenowatch