Skip to content

Commit e0076f3

Browse files
committed
upd: add other versions
1 parent 3d505f7 commit e0076f3

119 files changed

Lines changed: 3208 additions & 182 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,17 @@ jobs:
4747
- "6.1"
4848
- "7.0"
4949
- "8.0"
50+
- "9.0"
51+
- "10.0"
52+
- "11.0"
53+
- "12.0"
54+
- "13.0"
55+
- "14.0"
56+
- "15.0"
57+
- "16.0"
58+
- "17.0"
59+
- "18.0"
60+
- "19.0"
5061
python-version: [3.13]
5162
fail-fast: false
5263
runs-on: ubuntu-latest

10.0.Dockerfile

Lines changed: 243 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
1+
# The system version is limited by:
2+
# - WKHTMLTOPDF: requires libssl1.1
3+
FROM debian:buster-slim
4+
5+
SHELL ["/bin/bash", "-eo", "pipefail", "-c"]
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
10+
# Install system packages
11+
ARG TARGETARCH \
12+
WKHTMLTOPDF_PKGS="libfreetype6 libjpeg62-turbo libpng16-16 libxcb1 libxext6 libxrender1 xfonts-75dpi xfonts-base" \
13+
ODOO_PKGS="fonts-liberation libpq-dev libjpeg-dev zlib1g-dev libssl-dev libc6-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev"
14+
15+
# hadolint ignore=SC2086
16+
RUN set -eux; \
17+
rm /etc/apt/sources.list; \
18+
echo "deb http://archive.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list.d/buster.list; \
19+
echo "deb http://archive.debian.org/debian buster main" >> /etc/apt/sources.list.d/buster.list; \
20+
apt-get update && apt-get install -y --no-install-recommends \
21+
# Common
22+
fontconfig \
23+
ca-certificates \
24+
git \
25+
curl \
26+
# By Conf
27+
${WKHTMLTOPDF_PKGS} \
28+
${ODOO_PKGS} \
29+
# PyEnv
30+
build-essential \
31+
patch; \
32+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
33+
apt-get clean; \
34+
rm -rf /var/lib/apt/lists/*; \
35+
fc-cache -fv;
36+
37+
38+
# Install WKHTMLTOX
39+
ARG WKHTMLTOPDF_VERSION="0.12.1.4-2" \
40+
WKHTMLTOPDF_BASE_DEBIAN_VER=buster
41+
42+
RUN set -eux; \
43+
curl -L -o wkhtmltox.deb "https://github.com/wkhtmltopdf/packaging/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox_${WKHTMLTOPDF_VERSION}.${WKHTMLTOPDF_BASE_DEBIAN_VER}_${TARGETARCH}.deb"; \
44+
dpkg -i ./wkhtmltox.deb || apt-get install --no-install-recommends -f -y; \
45+
apt-get install --no-install-recommends -y ./wkhtmltox.deb; \
46+
rm -rf /tmp/*;
47+
48+
49+
# Create the runtime user
50+
ARG USER_ODOO_UID=7777 \
51+
USER_ODOO_GID=7777
52+
53+
# hadolint ignore=SC2153
54+
RUN set -eux; \
55+
groupadd --gid "${USER_ODOO_GID}" --system odoo; \
56+
useradd \
57+
--home-dir /home/odoo \
58+
--system \
59+
--uid "${USER_ODOO_UID}" \
60+
--gid "${USER_ODOO_GID}" \
61+
-s /bin/bash \
62+
odoo; \
63+
mkdir -p /home/odoo /etc/odoo /opt/odoo /var/lib/odoo; \
64+
chown -R odoo:odoo /home/odoo /opt/odoo /etc/odoo /var/lib/odoo;
65+
66+
67+
# Change to runtime user
68+
USER odoo
69+
70+
71+
# Install NodeJS & Depedencies
72+
ARG NVM_VERSION="v0.40.3" \
73+
NODE_VERSION="4.9.1" \
74+
ODOO_NPM_PKGS="rtlcss less@2.5.3 less-plugin-clean-css"
75+
76+
# hadolint ignore=SC2086
77+
RUN set -ex; \
78+
curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" | bash; \
79+
. ~/.nvm/nvm.sh; \
80+
nvm install "${NODE_VERSION}"; \
81+
nvm use "${NODE_VERSION}"; \
82+
npm install -g ${ODOO_NPM_PKGS};
83+
84+
85+
# Install & activate PyEnv
86+
ARG ODOO_PYTHON_VERSION="2.7" \
87+
SYSTEM_PYTHON_VERSION=3
88+
ARG PYTHON_SYSTEM_BIN_NAME="python${SYSTEM_PYTHON_VERSION}" \
89+
PYTHON_ODOO_BIN_NAME="python${ODOO_PYTHON_VERSION}"
90+
ENV PATH="/home/odoo/.pyenv/bin:/home/odoo/.pyenv/shims:$PATH" \
91+
PYENV_ROOT="/home/odoo/.pyenv" \
92+
PYENV_VIRTUALENV_DISABLE_PROMPT=1
93+
94+
RUN set -eux; \
95+
curl -fsSL https://pyenv.run | bash; \
96+
eval "$(pyenv init --path)"; \
97+
eval "$(pyenv init -)"; \
98+
eval "$(pyenv virtualenv-init -)"; \
99+
pyenv install "${SYSTEM_PYTHON_VERSION}" "${ODOO_PYTHON_VERSION}"; \
100+
pyenv global "${SYSTEM_PYTHON_VERSION}" "${ODOO_PYTHON_VERSION}"; \
101+
rm -rf ${PYENV_ROOT}/cache/*;
102+
103+
104+
### SYSTEM PYTHON ENV
105+
WORKDIR /home/odoo
106+
107+
# Install System PIP & Extra dependencies
108+
RUN set -eux; \
109+
"$PYTHON_SYSTEM_BIN_NAME" -m venv ~/.venv; \
110+
. .venv/bin/activate; \
111+
pip install --no-cache-dir --upgrade pip; \
112+
pip install --no-cache-dir click-odoo-contrib git-aggregator pyyaml psycopg2; \
113+
pip cache purge; \
114+
deactivate;
115+
116+
117+
### ODOO PYTHON ENV
118+
WORKDIR /opt/odoo
119+
120+
# Install Odoo PIP & Extra dependencies
121+
RUN set -eux; \
122+
curl -L -o get-pip.py "https://bootstrap.pypa.io/pip/${ODOO_PYTHON_VERSION}/get-pip.py"; \
123+
"$PYTHON_ODOO_BIN_NAME" get-pip.py; \
124+
rm -f get-pip.py; \
125+
"$PYTHON_ODOO_BIN_NAME" -m pip install --no-cache-dir --upgrade pip; \
126+
"$PYTHON_ODOO_BIN_NAME" -m pip install --no-cache-dir virtualenv; \
127+
"$PYTHON_ODOO_BIN_NAME" -m virtualenv /opt/odoo/.venv;
128+
129+
130+
# System Post-Configurations
131+
USER root
132+
133+
COPY --chown=odoo:odoo recipes/10.0/constraints.txt /opt/odoo/constraints.txt
134+
COPY docker-entrypoint.sh /usr/local/sbin/
135+
COPY tools/exec_env.sh /usr/local/sbin/exec_env
136+
COPY tools/generate_config.py /usr/local/sbin/generate_config
137+
COPY tools/create_addons_symlinks.py /usr/local/sbin/create_addons_symlinks
138+
COPY tools/check_addons_dependencies.py /usr/local/sbin/check_addons_dependencies
139+
COPY tools/auto_fill_external_dependencies.py /usr/local/sbin/auto_fill_external_dependencies
140+
COPY tools/wait_for_psql.py /usr/local/sbin/wait_for_psql
141+
COPY tools/auto_fill_repos.py /usr/local/sbin/auto_fill_repos
142+
RUN chmod +x \
143+
/usr/local/sbin/docker-entrypoint.sh \
144+
/usr/local/sbin/exec_env \
145+
/usr/local/sbin/generate_config \
146+
/usr/local/sbin/create_addons_symlinks \
147+
/usr/local/sbin/check_addons_dependencies \
148+
/usr/local/sbin/auto_fill_external_dependencies \
149+
/usr/local/sbin/auto_fill_repos \
150+
/usr/local/sbin/wait_for_psql;
151+
152+
# Change to runtime user
153+
USER odoo
154+
155+
156+
# Verifications
157+
RUN set -ex; \
158+
. ~/.nvm/nvm.sh; \
159+
wkhtmltopdf --version; \
160+
node --version;
161+
162+
163+
# Install Odoo + Extras
164+
ONBUILD ARG EXT_DEPS_OVERRIDES='' \
165+
ODOO_VERSION="10.0" \
166+
VERIFY_MISSING_MODULES=true \
167+
AUTO_DOWNLOAD_DEPENDENCIES=true \
168+
AUTO_FILL_REPOS=true
169+
ONBUILD ENV LC_ALL="C.UTF-8" \
170+
LANG="C.UTF-8" \
171+
GIT_DEPTH_NORMAL=1 \
172+
GIT_DEPTH_MERGE=500 \
173+
EXT_DEPS_OVERRIDES="openid:python-openid,ldap:python-ldap,evdev:evdev==1.5.0,usb.core:pyusb,${EXT_DEPS_OVERRIDES}" \
174+
ODOO_VERSION="${ODOO_VERSION}" \
175+
OCONF_addons_path="/var/lib/odoo/core,/var/lib/odoo/extra"
176+
177+
ONBUILD COPY --from=deps --chown=odoo:odoo apt.txt /opt/odoo/apt.txt
178+
ONBUILD COPY --from=deps --chown=odoo:odoo pip.txt /opt/odoo/pip.txt
179+
ONBUILD COPY --from=deps --chown=odoo:odoo npm.txt /opt/odoo/npm.txt
180+
ONBUILD COPY --from=addons --chown=odoo:odoo repos.yaml /opt/odoo/repos.yaml
181+
ONBUILD COPY --from=addons --chown=odoo:odoo addons.yaml /opt/odoo/addons.yaml
182+
183+
ONBUILD USER odoo
184+
185+
ONBUILD WORKDIR /opt/odoo
186+
187+
ONBUILD RUN set -ex; \
188+
. ~/.venv/bin/activate; \
189+
[ "$AUTO_FILL_REPOS" = true ] && auto_fill_repos; \
190+
gitaggregate -c repos.yaml --expand-env; \
191+
chmod +x /opt/odoo/odoo/odoo-bin; \
192+
create_addons_symlinks; \
193+
[ "$VERIFY_MISSING_MODULES" = true ] && check_addons_dependencies; \
194+
[ "$AUTO_DOWNLOAD_DEPENDENCIES" = true ] && auto_fill_external_dependencies; \
195+
deactivate; \
196+
. ~/.nvm/nvm.sh; \
197+
xargs npm install -g < /opt/odoo/npm.txt;
198+
199+
ONBUILD USER root
200+
201+
ONBUILD RUN set -ex; \
202+
apt-get update; \
203+
xargs apt-get install -y --no-install-recommends < /opt/odoo/apt.txt; \
204+
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
205+
apt-get clean; \
206+
rm -rf /var/lib/apt/lists/*; \
207+
rm -rf /tmp/*;
208+
209+
ONBUILD USER odoo
210+
211+
ONBUILD WORKDIR /opt/odoo/odoo
212+
213+
# hadolint ignore=DL3042
214+
ONBUILD RUN set -ex; \
215+
. ../.venv/bin/activate; \
216+
printf '#!/bin/bash\n/opt/odoo/odoo/odoo-bin "$@"' > ../.venv/bin/odoo; \
217+
chmod +x ../.venv/bin/odoo; \
218+
mv /opt/odoo/constraints.txt .;\
219+
pip install --no-binary psycopg2 -r requirements.txt -c constraints.txt; \
220+
pip install -r /opt/odoo/pip.txt; \
221+
# Cleanup
222+
pip cache purge; \
223+
find .. -maxdepth 3 -name "build" -type d -exec rm -rf {} +; \
224+
find .. -name "*.egg-info" -type d -exec rm -rf {} +; \
225+
find .. -name "*.pyc" -type f -delete; \
226+
rm -rf /tmp/*; \
227+
# Post-configurations
228+
python -m compileall /var/lib/odoo/; \
229+
# Ensure all is working
230+
odoo --version; \
231+
deactivate;
232+
233+
234+
ONBUILD WORKDIR /opt/odoo
235+
236+
237+
# Expose Odoo services
238+
EXPOSE 8069 8071 8072
239+
240+
241+
# Run
242+
ENTRYPOINT ["/usr/local/sbin/docker-entrypoint.sh"]
243+
CMD ["odoo", "-c", "/etc/odoo/odoo.conf"]

0 commit comments

Comments
 (0)