init
This commit is contained in:
72
app/Dockerfile
Normal file
72
app/Dockerfile
Normal file
@@ -0,0 +1,72 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
ARG puid=1000
|
||||
ARG pgid=1000
|
||||
ARG debug=false
|
||||
ENV PYTHONUNBUFFERED=1 \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
LANG=C.UTF-8 \
|
||||
LC_ALL=C.UTF-8 \
|
||||
DEBUG=${debug}
|
||||
|
||||
# setup user
|
||||
RUN groupadd -g ${pgid} -o custom_user && useradd -m -u ${puid} -g ${pgid} -o -s /bin/bash custom_user
|
||||
|
||||
# setup system requirements
|
||||
RUN apt-get update && apt-get install -y \
|
||||
gcc \
|
||||
libjpeg-dev \
|
||||
zlib1g-dev \
|
||||
curl \
|
||||
gnupg \
|
||||
ca-certificates \
|
||||
inotify-tools \
|
||||
libmagic1 \
|
||||
&& mkdir -p /etc/apt/keyrings \
|
||||
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
|
||||
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
|
||||
&& apt-get update && apt-get install nodejs -y \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& npm install -g yarn
|
||||
|
||||
# setup node requirements
|
||||
WORKDIR /app/frontend
|
||||
COPY ./frontend/package.json ./package.json
|
||||
RUN yarn install
|
||||
RUN if [ "$debug" = "true" ] ; then \
|
||||
echo "Mode dev, pas de build frontend" ; \
|
||||
else \
|
||||
yarn build ; \
|
||||
fi
|
||||
RUN chown -R custom_user:custom_user /app/frontend/node_modules
|
||||
|
||||
# setup python requirements
|
||||
WORKDIR /app
|
||||
COPY requirements/ requirements/
|
||||
RUN if [ "$debug" = "true" ] ; then \
|
||||
pip install --no-cache-dir -r requirements/dev.txt ; \
|
||||
else \
|
||||
pip install --no-cache-dir -r requirements/prod.txt ; \
|
||||
fi
|
||||
|
||||
COPY . .
|
||||
|
||||
# collect static
|
||||
RUN if [ "$debug" = "true" ] ; then \
|
||||
echo "Mode dev, pas de collectstatic" ; \
|
||||
else \
|
||||
python manage.py collectstatic --noinput ; \
|
||||
fi
|
||||
|
||||
USER custom_user
|
||||
# setup ipython
|
||||
RUN mkdir -p ~/.ipython/profile_default/ && echo "c.InteractiveShellApp.extensions = ['autoreload']\nc.InteractiveShellApp.exec_lines = ['%autoreload 2']" > ~/.ipython/profile_default/ipython_config.py
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 CMD \
|
||||
pgrep hypercorn >/dev/null 2>&1 && curl -f http://127.0.0.1:8000/health/ || exit 0
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
# Utiliser Hypercorn pour lancer l'app ASGI
|
||||
CMD ["hypercorn", "monprojet.asgi:application", "--bind", "0.0.0.0:8000"]
|
||||
Reference in New Issue
Block a user