93 lines
3.4 KiB
Docker
93 lines
3.4 KiB
Docker
# syntax=docker/dockerfile:1.3
|
|
FROM python:3.10-slim-bullseye AS sistema_base
|
|
USER root
|
|
RUN useradd --create-home --uid 1000 --shell /bin/bash briq
|
|
# installo le dipendenze che servono anche a runtime
|
|
RUN apt-get update\
|
|
&& apt-get install -y libpq-dev nginx curl bash\
|
|
gettext mosquitto-clients libjpeg-dev postgresql-client-13 \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& rm -rf /var/cache/apt/archives
|
|
RUN mkdir -p /django /django_static /var/lib/nginx /vue /logs /home/briq/.cache/pypoetry && \
|
|
touch /nginx.conf /maybe_ssl.conf /full_chain.pem /poetry_location && \
|
|
chown -R briq:briq /var/lib/nginx /django /vue /django_static /nginx.conf /logs /maybe_ssl.conf /full_chain.pem /poetry_location /home/briq/.cache/pypoetry
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
USER briq
|
|
RUN curl -sSL https://install.python-poetry.org | python3 -\
|
|
&& echo "/home/briq/.local/bin/poetry" > /poetry_location
|
|
|
|
USER root
|
|
RUN ln -s "$(cat /poetry_location)" /usr/bin/ && rm /poetry_location
|
|
|
|
|
|
FROM sistema_base as sistema_build
|
|
USER root
|
|
RUN apt-get update\
|
|
&& apt-get -y install npm --no-install-recommends\
|
|
&& npm install -g javascript-obfuscator\
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& rm -rf /var/cache/apt/archives
|
|
|
|
FROM sistema_build as sistema_build_dipendenze_python
|
|
USER root
|
|
RUN apt-get update\
|
|
&& apt-get -y install gcc build-essential git libpython3-dev ccache
|
|
|
|
COPY --chown=briq:briq /django/pyproject.toml /django/poetry.lock /django/
|
|
USER briq
|
|
RUN --mount=target=/home/briq/.cache/pypoetry/cache,type=cache,uid=1000,gid=1000 cd /django && poetry install --no-dev
|
|
USER root
|
|
RUN bash -c "set -e; find / -iname '__pycache__' -prune -exec rm -rf '{}' \; \
|
|
&& find / -iname '*.pyc' -delete"
|
|
|
|
|
|
FROM sistema_base AS sistema_base_con_python
|
|
USER briq:briq
|
|
COPY --from=sistema_build_dipendenze_python /home/briq/.cache/pypoetry/ /home/briq/.cache/pypoetry/
|
|
|
|
|
|
FROM sistema_build_dipendenze_python as sistema_build_python
|
|
USER briq:briq
|
|
WORKDIR /django
|
|
RUN --mount=target=/home/briq/.cache/pypoetry/cache,type=cache,uid=1000,gid=1000 poetry install
|
|
USER root
|
|
COPY --chown=briq:briq django /django/
|
|
USER briq:briq
|
|
RUN --mount=target=/ccache,type=cache,uid=1000,gid=1000 env CCACHE_DIR=/ccache bash compila_apps.sh
|
|
USER root
|
|
|
|
|
|
FROM sistema_build AS sistema_build_js
|
|
USER root
|
|
COPY --chown=briq:briq vue/package.json vue/package-lock.json /vue/
|
|
USER briq:briq
|
|
WORKDIR /vue
|
|
RUN npm install
|
|
COPY /vue/ /vue/
|
|
#COPY docker/babel.config.js /vue/babel.config.js
|
|
RUN npm run build
|
|
|
|
|
|
FROM sistema_base_con_python AS sistema_deploy
|
|
USER briq:briq
|
|
COPY --from=sistema_build_python /django_static/ /django_static/
|
|
RUN true #vedi https://github.com/moby/moby/issues/37965
|
|
COPY --from=sistema_build_python /django /django/
|
|
RUN true
|
|
COPY --from=sistema_build_python /django/pyproject.toml /django/
|
|
RUN true
|
|
COPY --from=sistema_build_js /vue/dist /vue/dist
|
|
WORKDIR /
|
|
ARG GIT_COMMIT_SHA=N/A
|
|
ARG GIT_COMMIT_REF=N/A
|
|
ARG GIT_CLEAN=true
|
|
ARG GIT_COMMIT_DATE=ContinuousIntegration
|
|
USER root
|
|
RUN echo "{\"shash\": \"${GIT_COMMIT_SHA}\", \"lhash\": \"${GIT_COMMIT_SHA}\", \"commsdate\": \"${GIT_COMMIT_DATE}\", \"refnames\": \"${GIT_COMMIT_REF}\", \"clean\":\"${GIT_CLEAN}\"}" > /git_info
|
|
COPY --chown=briq:briq docker/test_and_build/run_in_docker.sh docker/test_and_build/startstop_utils.sh docker/test_and_build/nginx.conf.tpl /
|
|
RUN cp -f /git_info /vue/dist/ver.json
|
|
RUN chown briq:briq /vue/dist/ver.json
|
|
USER briq:briq
|
|
CMD /run_in_docker.sh
|