Newer
Older
FROM python:3.11-slim-bookworm AS builder
apt-get install -y --no-install-recommends build-essential libfreetype-dev libldap2-dev libpq-dev libsasl2-dev libxml2-dev libxslt1-dev &&\
pip install wheel &&\
pip wheel --wheel-dir=/svc/wheels -r https://raw.githubusercontent.com/oca/OCB/17.0/requirements.txt &&\
# astor required by base_view_inheritance_extension
# openupgradelib required for OCA module migration from one version to another
# phonenumbers required by phone_validation
# python-stdnum>=1.18 required by l10n_fr_siret and l10n_fr_siret_lookup
# PyYAML required by custom scripts for adding modules (https://sources.le-filament.com/lefilament/ansible-roles/docker_odoo/-/tree/master/templates)
# zxcvbn required by password_security
pip wheel --wheel-dir=/svc/wheels astor openupgradelib phonenumbers python-stdnum>=1.18 PyYAML zxcvbn
FROM python:3.11-slim-bookworm AS final
ENV LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \
PGDATABASE=odoo
RUN set -x; \
apt-get update &&\
apt-get install -y --no-install-recommends \
curl \
git \
gnupg \
openssh-client \
postgresql-client \
wkhtmltopdf \
rm -rf /var/lib/apt/lists/*
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
COPY --from=builder /svc /svc
RUN pip3 install --no-index --find-links=/svc/wheels -r https://raw.githubusercontent.com/oca/OCB/17.0/requirements.txt &&\
pip3 install -U --no-index --find-links=/svc/wheels astor openupgradelib phonenumbers python-stdnum>=1.18 PyYAML zxcvbn
# Add Git Known Hosts
COPY ./ssh_known_git_hosts /root/.ssh/known_hosts
# Install Odoo and remove not French translations and .git directory to limit amount of data used by container
RUN set -x; \
useradd --create-home --home-dir /opt/odoo --no-log-init odoo &&\
/bin/bash -c "mkdir -p /opt/odoo/{etc,odoo,additional_addons,private_addons,data,private}" &&\
curl -L https://github.com/OCA/OCB/tarball/17.0 | tar -xzC /opt/odoo/odoo --strip-components 1 &&\
find /opt/odoo/odoo/addons/*/i18n/ /opt/odoo/odoo/odoo/addons/base/i18n/ -type f -not -name 'fr.po' -delete &&\
chown -R odoo:odoo /opt/odoo
# Install Odoo OCA default dependencies - Commented modules do not exist yet
# RUN set -x; \
# mkdir -p /tmp/oca-repos/ &&\
# curl -L https://github.com/OCA/account-financial-tools/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="account-financial-tools" --strip-components 1 &&\
# mv /tmp/oca-repos/account-financial-tools/account_lock_date_update \
# /tmp/oca-repos/account-financial-tools/account_move_name_sequence \
# /tmp/oca-repos/account-financial-tools/account_reconcile_show_boolean \
# /tmp/oca-repos/account-financial-tools/account_usability \
# /opt/odoo/additional_addons/ &&\
# https://github.com/OCA/account-invoicing/pull/1419
# curl -L https://github.com/OCA/account-invoicing/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="account-invoicing" --strip-components 1 &&\
# mv /tmp/oca-repos/account-invoicing/sale_timesheet_invoice_description \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/account-reconcile/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="account-reconcile" --strip-components 1 &&\
# mv /tmp/oca-repos/account-reconcile/account_statement_base \
# /tmp/oca-repos/account-reconcile/account_reconcile_oca \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/bank-statement-import/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="bank-statement-import" --strip-components 1 &&\
# mv /tmp/oca-repos/bank-statement-import/account_statement_import_base \
# /tmp/oca-repos/bank-statement-import/account_statement_import_file \
# /tmp/oca-repos/bank-statement-import/account_statement_import_ofx \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/crm/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="crm" --strip-components 1 &&\
# mv /tmp/oca-repos/crm/crm_stage_probability /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/l10n-france/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="l10n-france" --strip-components 1 &&\
# mv /tmp/oca-repos/l10n-france/l10n_fr_siret \
# /tmp/oca-repos/l10n-france/l10n_fr_siret_lookup \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/partner-contact/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="partner-contact" --strip-components 1 &&\
# mv /tmp/oca-repos/partner-contact/partner_disable_gravatar \
# /tmp/oca-repos/partner-contact/partner_firstname \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/project/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="project" --strip-components 1 &&\
# mv /tmp/oca-repos/project/project_task_default_stage \
# /tmp/oca-repos/project/project_template \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/server-auth/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="server-auth" --strip-components 1 &&\
# mv /tmp/oca-repos/server-auth/password_security \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/server-brand/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="server-brand" --strip-components 1 &&\
# mv /tmp/oca-repos/server-brand/disable_odoo_online \
# /tmp/oca-repos/server-brand/portal_odoo_debranding \
# /tmp/oca-repos/server-brand/remove_odoo_enterprise \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/server-tools/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="server-tools" --strip-components 1 &&\
# mv /tmp/oca-repos/server-tools/base_view_inheritance_extension \
# /tmp/oca-repos/server-tools/module_change_auto_install \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/server-ux/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="server-ux" --strip-components 1 &&\
# mv /tmp/oca-repos/server-ux/server_action_mass_edit \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/social/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="social" --strip-components 1 &&\
# mv /tmp/oca-repos/social/mail_debrand \
# /tmp/oca-repos/social/mail_tracking \
# /opt/odoo/additional_addons/ &&\
# curl -L https://github.com/OCA/web/tarball/17.0 | tar -xzC /tmp/oca-repos/ --one-top-level="web" --strip-components 1 &&\
# mv /tmp/oca-repos/web/web_chatter_position \
# /tmp/oca-repos/web/web_environment_ribbon \
# /tmp/oca-repos/web/web_refresher \
# /tmp/oca-repos/web/web_responsive \
# /tmp/oca-repos/web/web_no_bubble \
# /tmp/oca-repos/web/web_theme_classic \
# /opt/odoo/additional_addons/ &&\
# rm -rf /tmp/oca-repos/ &&\
# find /opt/odoo/additional_addons/*/i18n/ -type f -not -name 'fr.po' -delete &&\
# # Install Le Filament default dependency
# git clone -b 17.0 --depth 1 https://sources.le-filament.com/lefilament/remove_login_links.git /opt/odoo/private_addons/remove_login_links &&\
# git clone -b 17.0 --depth 1 https://sources.le-filament.com/lefilament/lefilament_release_agent.git /opt/odoo/private_addons/lefilament_release_agent &&\
# chown -R odoo:odoo /opt/odoo
# Copy entrypoint script and Odoo configuration file
COPY ./entrypoint.sh /
COPY ./odoo.conf /opt/odoo/etc/odoo.conf
RUN chown odoo:odoo /opt/odoo/etc/odoo.conf
# Mount /opt/odoo/data to allow restoring filestore
VOLUME ["/opt/odoo/data/"]
# Expose Odoo services
EXPOSE 8069
# Set default user when running the container
USER odoo
# Start
ENTRYPOINT ["/entrypoint.sh"]
CMD ["odoo"]
# Metadata
LABEL org.label-schema.schema-version="17.0" \
org.label-schema.vendor=LeFilament \
org.label-schema.license=Apache-2.0 \
org.label-schema.vcs-url="https://sources.le-filament.com/lefilament/odoo_docker"