Newer
Older
FROM python:3.10-slim-bullseye AS builder
RUN set -x; \

Théo - Le Filament
committed
apt-get update \
&& apt-get install --yes --no-install-recommends \
build-essential \
curl \
libldap2-dev \
libpq-dev \
libsasl2-dev
RUN pip install 'wheel' \
&& requirements_file='/opt/requirements_custom.txt' \
&& curl --location --output "$requirements_file" 'https://raw.githubusercontent.com/oca/OCB/15.0/requirements.txt' \
&& sed -i \
-e 's/gevent==[0-9\.]*/gevent==22.10.2/' \
-e 's/greenlet==[0-9\.]*/greenlet==2.0.2/' \
"$requirements_file" \
&& cat <<EOF >> "$requirements_file" \
&& pip wheel --wheel-dir=/svc/wheels --requirement "$requirements_file"
phonenumbers
simplejson
openupgradelib
PyYAML
EOF
FROM python:3.10-slim-bullseye AS final
ENV LANG=C.UTF-8 \
LC_ALL=C.UTF-8 \
PGDATABASE=odoo
RUN set -x; \

Théo - Le Filament
committed
apt-get update \
&& apt-get install --yes --no-install-recommends \
curl \
git \
gnupg \
openssh-client \
xmlsec1 \
&& echo 'deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main' >> /etc/apt/sources.list.d/postgresql.list \
&& curl -SL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
&& curl -o wkhtmltox.deb -SL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.bullseye_amd64.deb \
&& echo 'cecbf5a6abbd68d324a7cd6c51ec843d71e98951 wkhtmltox.deb' | sha1sum -c - \
&& apt-get update \

Théo - Le Filament
committed
&& apt-get install --yes --no-install-recommends ./wkhtmltox.deb \
&& apt-get install --yes --no-install-recommends postgresql-client \
&& apt-get --yes autoremove \

Théo - Le Filament
committed
&& rm -rf /var/lib/apt/lists/* wkhtmltox.deb
COPY --from=builder /svc /svc
COPY --from=builder /opt/requirements_custom.txt /opt/requirements_custom.txt
RUN pip3 install --no-index --find-links=/svc/wheels --requirement /opt/requirements_custom.txt

Théo - Le Filament
committed
ARG SAVE_COMMITS_DIR='/opt/odoo_commits/'
ENV SAVE_COMMITS_DIR=$SAVE_COMMITS_DIR
# 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

Théo - Le Filament
committed
ARG SAVE_COMMITS_FILENAME='ocb'

Théo - Le Filament
committed
repo='https://github.com/OCA/OCB' \
branch='15.0' \
&& 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}" \
&& mkdir /opt/odoo_commits \
&& git clone --single-branch --branch "${branch}" --depth 1 "${repo}" /tmp/repo \
&& commit="$(git -C /tmp/repo rev-parse HEAD)" \
&& mv /tmp/repo/* /opt/odoo/odoo/ \
&& echo "repo;ref;commit" > $SAVE_COMMITS_DIR/$SAVE_COMMITS_FILENAME \
&& echo "${repo};${branch};${commit}" >> $SAVE_COMMITS_DIR/$SAVE_COMMITS_FILENAME \

Théo - Le Filament
committed
&& rm -r /tmp/repo \
# Only keep French translations.
&& find /opt/odoo/odoo/addons/*/i18n/ /opt/odoo/odoo/odoo/addons/base/i18n/ -type f -not -name 'fr.po' -delete \
&& echo "info: OCB commit:" \
&& cat $SAVE_COMMITS_DIR/$SAVE_COMMITS_FILENAME
# Add script to download Odoo addons.
COPY --chown=root:root --chmod=755 ./get_addons /usr/local/bin
# Install Odoo OCA default dependencies - Commented modules do not exist yet

Théo - Le Filament
committed
ARG SAVE_COMMITS_FILENAME='default_addons'

Théo - Le Filament
committed
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
get_addons 'https://github.com/OCA/account-financial-reporting' '15.0' 'additional_addons' \
account_tax_balance \
&& get_addons 'https://github.com/OCA/account-financial-tools' '15.0' 'additional_addons' \
account_lock_date_update \
account_move_name_sequence \
&& get_addons 'https://github.com/OCA/account-invoicing' '15.0' 'additional_addons' \
sale_timesheet_invoice_description \
&& get_addons 'https://github.com/OCA/account-reconcile' '15.0' 'additional_addons' \
account_reconciliation_widget \
&& get_addons 'https://github.com/OCA/bank-statement-import' '15.0' 'additional_addons' \
account_statement_import \
&& get_addons 'https://github.com/OCA/crm' '15.0' 'additional_addons' \
crm_stage_probability \
&& get_addons 'https://github.com/OCA/partner-contact' '15.0' 'additional_addons' \
partner_firstname \
&& get_addons 'https://github.com/OCA/project' '15.0' 'additional_addons' \
project_status \
project_task_default_stage \
project_template \
project_timeline \
&& get_addons 'https://github.com/OCA/server-brand' '15.0' 'additional_addons' \
disable_odoo_online \
remove_odoo_enterprise \
&& get_addons 'https://github.com/OCA/server-tools' '15.0' 'additional_addons' \
base_search_fuzzy \
module_change_auto_install \
&& get_addons 'https://github.com/OCA/server-ux' '15.0' 'additional_addons' \
base_technical_features \
date_range \
mass_editing \
&& get_addons 'https://github.com/OCA/social' '15.0' 'additional_addons' \
base_search_mail_content \
mail_debrand \
mail_tracking \
&& get_addons 'https://github.com/OCA/web' '15.0' 'additional_addons' \
web_environment_ribbon \
web_responsive \
web_no_bubble \
web_timeline \
# Only keep French translations.
&& find /opt/odoo/additional_addons/*/i18n/ -type f -not -name 'fr.po' -delete \
# Install Le Filament default addons.
&& get_addons 'https://sources.le-filament.com/lefilament/remove_login_links.git' '15.0' 'private_addons/remove_login_links' \
&& get_addons 'https://sources.le-filament.com/lefilament/lefilament_release_agent.git' '15.0' 'private_addons/lefilament_release_agent' \
&& echo "info: default addon commits:" \
&& cat $SAVE_COMMITS_DIR/$SAVE_COMMITS_FILENAME
# Copy entrypoint script and Odoo configuration file
COPY ./entrypoint.sh /
COPY ./odoo.conf /opt/odoo/etc/odoo.conf

Théo - Le Filament
committed
RUN chown -R odoo:odoo /opt/odoo
# 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="15.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"