updated Docker build
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.venv
|
34
Dockerfile
Normal file
34
Dockerfile
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
FROM alpine:latest AS base
|
||||||
|
LABEL org.opencontainers.image.authors=oggioni.walter@gmail.com
|
||||||
|
RUN --mount=type=cache,target=/var/cache/apk apk update
|
||||||
|
RUN --mount=type=cache,target=/var/cache/apk apk add python3 py3-pip uwsgi uwsgi-python3 graphviz uwsgi-gevent3
|
||||||
|
|
||||||
|
FROM base AS build
|
||||||
|
RUN adduser -D luser
|
||||||
|
USER luser
|
||||||
|
WORKDIR /home/luser
|
||||||
|
COPY --chown=luser:users ./requirements-dev.txt ./md2html/requirements-dev.txt
|
||||||
|
COPY --chown=luser:users ./src ./md2html/src
|
||||||
|
COPY --chown=luser:users ./pyproject.toml ./md2html/pyproject.toml
|
||||||
|
WORKDIR /home/luser/md2html
|
||||||
|
RUN python -m venv venv
|
||||||
|
RUN --mount=type=cache,target=/home/luser/.cache/pip,uid=1000,gid=1000 venv/bin/pip install -r requirements-dev.txt
|
||||||
|
RUN --mount=type=cache,target=/home/luser/.cache/pip,uid=1000,gid=1000 venv/bin/python -m build
|
||||||
|
|
||||||
|
FROM base AS release
|
||||||
|
RUN mkdir /srv/http
|
||||||
|
RUN adduser -D -h /var/md2html -u 1000 md2html
|
||||||
|
USER md2html
|
||||||
|
WORKDIR /var/md2html
|
||||||
|
RUN python -m venv venv
|
||||||
|
RUN --mount=type=cache,target=/var/md2html/.cache/pip,uid=1000,gid=1000 --mount=type=cache,ro,from=build,source=/home/luser/md2html/dist,target=/dist venv/bin/pip install /dist/*.whl
|
||||||
|
COPY --chown=md2html:users conf/uwsgi.ini /var/md2html/
|
||||||
|
|
||||||
|
VOLUME /srv/http
|
||||||
|
WORKDIR /srv/http
|
||||||
|
ENTRYPOINT ["uwsgi"]
|
||||||
|
EXPOSE 1910/tcp
|
||||||
|
EXPOSE 1910/udp
|
||||||
|
CMD [ "--ini", "/var/md2html/uwsgi.ini" ]
|
||||||
|
|
||||||
|
|
@@ -2,7 +2,7 @@
|
|||||||
#logformat = "%(proto) - %(method) %(uri) %(status) %(addr)
|
#logformat = "%(proto) - %(method) %(uri) %(status) %(addr)
|
||||||
need-plugin=/usr/lib/uwsgi/python_plugin.so
|
need-plugin=/usr/lib/uwsgi/python_plugin.so
|
||||||
need-plugin=/usr/lib/uwsgi/gevent3_plugin.so
|
need-plugin=/usr/lib/uwsgi/gevent3_plugin.so
|
||||||
socket = :1910
|
socket = 0.0.0.0:1910
|
||||||
module = md2html.uwsgi_handler
|
module = md2html.uwsgi_handler
|
||||||
virtualenv = /var/md2html/venv
|
virtualenv = /var/md2html/venv
|
||||||
gevent = 1000
|
gevent = 1000
|
@@ -1,20 +0,0 @@
|
|||||||
FROM alpine:latest
|
|
||||||
MAINTAINER Oggioni Walter <oggioni.walter@gmail.com>
|
|
||||||
RUN apk update
|
|
||||||
RUN apk add python3 py3-pip uwsgi uwsgi-python3 graphviz uwsgi-gevent3
|
|
||||||
RUN mkdir /srv/http
|
|
||||||
RUN mkdir /var/md2html
|
|
||||||
WORKDIR /var/md2html
|
|
||||||
RUN python -m venv venv
|
|
||||||
ADD uwsgi.ini /var/md2html
|
|
||||||
ADD md2html-*.whl /
|
|
||||||
RUN venv/bin/pip install /md2html-*.whl && rm /md2html-*.whl
|
|
||||||
VOLUME /srv/http
|
|
||||||
WORKDIR /srv/http
|
|
||||||
ENTRYPOINT ["uwsgi"]
|
|
||||||
EXPOSE 1910/tcp
|
|
||||||
EXPOSE 1910/udp
|
|
||||||
USER nobody
|
|
||||||
CMD [ "--ini", "/var/md2html/uwsgi.ini" ]
|
|
||||||
|
|
||||||
|
|
@@ -31,6 +31,11 @@ dependencies = [
|
|||||||
"zope.interface"
|
"zope.interface"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[project.optional-dependencies]
|
||||||
|
dev = [
|
||||||
|
"build", "pip-tools", "mypy", "ipdb"
|
||||||
|
]
|
||||||
|
|
||||||
[tool.setuptools.package-data]
|
[tool.setuptools.package-data]
|
||||||
md2html = ['static/*']
|
md2html = ['static/*']
|
||||||
|
|
||||||
|
103
requirements-dev.txt
Normal file
103
requirements-dev.txt
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile with Python 3.10
|
||||||
|
# by the following command:
|
||||||
|
#
|
||||||
|
# pip-compile --extra=dev --output-file=requirements-dev.txt pyproject.toml
|
||||||
|
#
|
||||||
|
--index-url https://gitea.woggioni.net/api/packages/woggioni/pypi/simple/
|
||||||
|
--extra-index-url https://pypi.org/simple
|
||||||
|
|
||||||
|
asttokens==2.4.1
|
||||||
|
# via stack-data
|
||||||
|
build==1.2.1
|
||||||
|
# via
|
||||||
|
# md2html (pyproject.toml)
|
||||||
|
# pip-tools
|
||||||
|
click==8.1.7
|
||||||
|
# via pip-tools
|
||||||
|
decorator==5.1.1
|
||||||
|
# via
|
||||||
|
# ipdb
|
||||||
|
# ipython
|
||||||
|
exceptiongroup==1.2.2
|
||||||
|
# via ipython
|
||||||
|
executing==2.0.1
|
||||||
|
# via stack-data
|
||||||
|
gevent==24.2.1
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
|
greenlet==3.0.3
|
||||||
|
# via
|
||||||
|
# gevent
|
||||||
|
# md2html (pyproject.toml)
|
||||||
|
ipdb==0.13.13
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
|
ipython==8.26.0
|
||||||
|
# via ipdb
|
||||||
|
jedi==0.19.1
|
||||||
|
# via ipython
|
||||||
|
markdown==3.6
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
|
matplotlib-inline==0.1.7
|
||||||
|
# via ipython
|
||||||
|
mypy==1.11.1
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
|
mypy-extensions==1.0.0
|
||||||
|
# via mypy
|
||||||
|
packaging==24.1
|
||||||
|
# via build
|
||||||
|
parso==0.8.4
|
||||||
|
# via jedi
|
||||||
|
pexpect==4.9.0
|
||||||
|
# via ipython
|
||||||
|
pip-tools==7.4.1
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
|
prompt-toolkit==3.0.47
|
||||||
|
# via ipython
|
||||||
|
ptyprocess==0.7.0
|
||||||
|
# via pexpect
|
||||||
|
pure-eval==0.2.3
|
||||||
|
# via stack-data
|
||||||
|
pygments==2.18.0
|
||||||
|
# via
|
||||||
|
# ipython
|
||||||
|
# md2html (pyproject.toml)
|
||||||
|
pyproject-hooks==1.1.0
|
||||||
|
# via
|
||||||
|
# build
|
||||||
|
# pip-tools
|
||||||
|
six==1.16.0
|
||||||
|
# via asttokens
|
||||||
|
stack-data==0.6.3
|
||||||
|
# via ipython
|
||||||
|
tomli==2.0.1
|
||||||
|
# via
|
||||||
|
# build
|
||||||
|
# ipdb
|
||||||
|
# mypy
|
||||||
|
# pip-tools
|
||||||
|
traitlets==5.14.3
|
||||||
|
# via
|
||||||
|
# ipython
|
||||||
|
# matplotlib-inline
|
||||||
|
typing-extensions==4.12.2
|
||||||
|
# via
|
||||||
|
# ipython
|
||||||
|
# mypy
|
||||||
|
watchdog==4.0.2
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
|
wcwidth==0.2.13
|
||||||
|
# via prompt-toolkit
|
||||||
|
wheel==0.44.0
|
||||||
|
# via pip-tools
|
||||||
|
zope-event==5.0
|
||||||
|
# via
|
||||||
|
# gevent
|
||||||
|
# md2html (pyproject.toml)
|
||||||
|
zope-interface==7.0.1
|
||||||
|
# via
|
||||||
|
# gevent
|
||||||
|
# md2html (pyproject.toml)
|
||||||
|
|
||||||
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
|
# pip
|
||||||
|
# setuptools
|
@@ -1,10 +1,32 @@
|
|||||||
build==1.0.3
|
#
|
||||||
|
# This file is autogenerated by pip-compile with Python 3.10
|
||||||
|
# by the following command:
|
||||||
|
#
|
||||||
|
# pip-compile --output-file=requirements.txt --strip-extras pyproject.toml
|
||||||
|
#
|
||||||
|
--index-url https://gitea.woggioni.net/api/packages/woggioni/pypi/simple/
|
||||||
|
--extra-index-url https://pypi.org/simple
|
||||||
|
|
||||||
gevent==23.9.1
|
gevent==23.9.1
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
greenlet==3.0.0
|
greenlet==3.0.0
|
||||||
Markdown==3.5
|
# via
|
||||||
packaging==23.2
|
# gevent
|
||||||
Pygments==2.16.1
|
# md2html (pyproject.toml)
|
||||||
pyproject_hooks==1.0.0
|
markdown==3.5
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
|
pygments==2.16.1
|
||||||
|
# via md2html (pyproject.toml)
|
||||||
watchdog==3.0.0
|
watchdog==3.0.0
|
||||||
zope.event==5.0
|
# via md2html (pyproject.toml)
|
||||||
zope.interface==6.1
|
zope-event==5.0
|
||||||
|
# via
|
||||||
|
# gevent
|
||||||
|
# md2html (pyproject.toml)
|
||||||
|
zope-interface==6.1
|
||||||
|
# via
|
||||||
|
# gevent
|
||||||
|
# md2html (pyproject.toml)
|
||||||
|
|
||||||
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
|
# setuptools
|
||||||
|
Reference in New Issue
Block a user