Mercurial > p > roundup > code
annotate scripts/Dockerfile @ 6524:f961dbbc3573
issue2551167 roundup issues when using pip install
Running pip install generates a wheel install. This places locale,
template and man pages under site-packages/usr/share/....
These changes make roundup look there for templates (affecting
admin.py) and locale (affecting i18n.py) files. This also makes it
work better in virtual environment and containers (docker).
There is also a commented out bit of code in setup.py that prevents it
from making a bdist_wheel forcing a regular install with files put
under /usr/locale etc. This can be re-enabled if needed for 2.2 if
there are still issues with roundup that aren't solved by then.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 07 Nov 2021 01:49:03 -0400 |
| parents | 49d26e77d173 |
| children | 5ad7fb912227 |
| rev | line source |
|---|---|
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
1 # build in root dir using: |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
2 # |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
3 # docker build -t roundup-app --rm -f scripts/Dockerfile . |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
4 # |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
5 # run using: |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
6 # |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
7 # docker run --rm -v /.../issue.tracker:/usr/src/app/tracker \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
8 # -p 9017:8080 roundup-app:latest |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
9 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
10 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
11 # Global vars for all build stages |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
12 |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
13 # application directory |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
14 ARG appdir=/usr/src/app |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
15 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
16 # support roundup install from 'local' directory or from 'pypi' |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
17 ARG source=local |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
18 |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
19 FROM python:3-alpine as build |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
20 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
21 # Inherit global values https://github.com/moby/moby/issues/37345 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
22 ARG appdir |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
23 |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
24 WORKDIR $appdir |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
25 |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
26 # Add packages needed to compile mysql, pgsql and other python modules. |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
27 # Can't use apk to add them as that installs a 3.9 python version. |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
28 # g++ installs cc1plus needed by pip install |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
29 RUN apk add \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
30 g++ \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
31 gcc \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
32 gpgme-dev \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
33 linux-headers \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
34 musl-dev \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
35 mysql-dev \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
36 postgresql-dev \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
37 swig |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
38 |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
39 # add requirements for pip here, e.g. Whoosh, gpg, zstd or other |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
40 # modules not installed in the base library. |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
41 # ignore warnings from pip to use virtualenv |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
42 COPY scripts/requirements.txt . |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
43 RUN pip install --no-cache-dir -r requirements.txt |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
44 |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
45 # copy the elements of the release directory to the docker image |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
46 COPY setup.py install/ |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
47 COPY doc install/doc/ |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
48 COPY frontends install/frontends/ |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
49 COPY locale install/locale/ |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
50 COPY roundup install/roundup/ |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
51 COPY share install/share/ |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
52 |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
53 # verify source has one of two valid values then |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
54 # install in python3 standard directories from local copy |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
55 # or install in python3 standard directories from pypi using pip |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
56 # import from global/command line |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
57 ARG source |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
58 RUN set -xv && if [ "$source" = "local" ] || [ "$source" = "pypi" ]; then :; \ |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
59 else echo "invalid value for source: $source"; \ |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
60 echo "must be local or pypi"; exit 1; fi; \ |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
61 if [ "$source" = "local" ]; then cd install && ./setup.py install; fi; \ |
|
6523
49d26e77d173
issue2551163 Docker/containerization support - pypi fix
John Rouillard <rouilj@ieee.org>
parents:
6522
diff
changeset
|
62 if [ "$source" = "pypi" ]; then pip install roundup; \ |
|
49d26e77d173
issue2551163 Docker/containerization support - pypi fix
John Rouillard <rouilj@ieee.org>
parents:
6522
diff
changeset
|
63 cp -ril /usr/local/lib/python3.10/site-packages/usr/local/share/* \ |
|
49d26e77d173
issue2551163 Docker/containerization support - pypi fix
John Rouillard <rouilj@ieee.org>
parents:
6522
diff
changeset
|
64 /usr/local/share; fi |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
65 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
66 # build a new smaller docker image for execution. Build image above |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
67 # is 1G in size. |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
68 FROM python:3-alpine |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
69 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
70 # import from global |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
71 ARG appdir |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
72 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
73 WORKDIR $appdir |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
74 |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
75 # add libraries needed to run gpg/mysql/pgsql/brotli |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
76 RUN apk add \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
77 gpgme \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
78 mariadb-connector-c \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
79 libpq \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
80 libstdc++ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
81 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
82 ARG source |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
83 LABEL "org.roundup-tracker.vendor"="Roundup Issue Tracker Team" \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
84 "org.roundup-tracker.description"="Roundup Issue Tracker using sqlite" \ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
85 "version"="2.1.0 $source" |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
86 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
87 # pull over built assets |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
88 COPY --from=build /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages/ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
89 COPY --from=build /usr/local/bin/roundup* /usr/local/bin/ |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
90 COPY --from=build /usr/local/share /usr/local/share/ |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
91 |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
92 # map port 8080 to your local port |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
93 EXPOSE 8080/tcp |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
94 |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
95 # mount a trackerdir on tracker location |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
96 RUN mkdir tracker |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
97 VOLUME $appdir/tracker |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
98 |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
99 # do not run roundup as root |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
100 RUN adduser -D -h /usr/src/app roundup |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
101 USER roundup |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
102 |
|
6522
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
103 # run the server, disable output buffering so we can see logs. |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
104 ENV PYTHONUNBUFFERED=1 |
|
e6ae8188f61a
issue2551163 Docker/containerization support
John Rouillard <rouilj@ieee.org>
parents:
6520
diff
changeset
|
105 ENTRYPOINT [ "roundup-server", "-n", "0.0.0.0" ] |
|
6520
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
106 |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
107 # allow the invoker to override cmd with multiple trackers |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
108 # in each subdirectory under $appdir/tracker. E.G. |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
109 # docker run .... \ |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
110 # issues=tracker/issues foo=tracker/foo |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
111 # |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
112 # note using "issue=$appdir/tracker" results in error: |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
113 # |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
114 # No valid configuration files found in directory /usr/src/app/$appdir/tracker |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
115 # |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
116 # so $appdir not expanded and $PWD prefixed onto the (relative path) |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
117 # $appdir/tracker. Hence use relative path for spec. |
|
26babdf85067
issue2551163 - add starter docker
John Rouillard <rouilj@ieee.org>
parents:
diff
changeset
|
118 CMD [ "issues=tracker" ] |
