Sélectionner une révision Git
-
Benjamin - Le Filament a rédigéBenjamin - Le Filament a rédigé
16.0-scratch.Dockerfile 9,27 Kio
FROM surnet/alpine-wkhtmltopdf:3.16.0-0.12.6-small as wkhtmltopdf
FROM alpine as build
# Initial setup of new root.
RUN apk update \
&& mkdir --parents \
/newroot/etc \
/newroot/bin \
/newroot/usr/bin \
&& cp -a --parents \
/bin/busybox \
/lib/ld-musl* \
/newroot/ \
&& /bin/busybox --install -s /newroot/bin/ \
&& /bin/busybox --install -s /newroot/usr/bin/ \
&& echo 'root:x:0:0:::' > /newroot/etc/passwd \
&& echo 'root:x:0:' > /newroot/etc/group
# Add depedencies
RUN apk add --no-cache \
file \
freetype-dev \
g++ \
gcc \
git \
jpeg-dev \
libev-dev \
libffi-dev \
libx11-dev \
libxrender-dev \
fontconfig-dev \
make \
musl-dev \
openldap-dev \
postgresql-dev \
py3-pip \
python3 \
python3-dev \
zlib-dev
# Add Odoo.
RUN git clone -b 16.0 --depth 1 https://github.com/OCA/OCB.git /newroot/opt/odoo/odoo \
&& rm -rf /newroot/opt/odoo/odoo/.git \
&& find /newroot/opt/odoo/odoo/addons/*/i18n/ /newroot/opt/odoo/odoo/odoo/addons/base/i18n/ -type f -not -name 'fr.po' -delete
## Add Git known hosts.
COPY ./ssh_known_git_hosts /root/.ssh/known_hosts
## Install Odoo OCA and Le Filament default dependencies.
RUN mkdir -p \
/tmp/oca-repos/ \
/newroot/opt/odoo/additional_addons \
/newroot/opt/odoo/private_addons \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/account-financial-tools.git \
/tmp/oca-repos/account-financial-tools \
# && mv /tmp/oca-repos/account-financial-tools/account_lock_date_update \ # https://github.com/OCA/account-financial-tools/pull/1526
&& mv /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 \
/newroot/opt/odoo/additional_addons/ \
# && git clone -b 16.0 --depth 1 \
# https://github.com/OCA/account-invoicing.git \
# /tmp/oca-repos/account-invoicing \
# && mv /tmp/oca-repos/account-invoicing/sale_timesheet_invoice_description \
# /newroot/opt/odoo/additional_addons/ \
# Until migrated to OCA (https://github.com/OCA/account-reconcile/pull/500)
&& git clone -b 16.0-add-account_reconcile_oca --depth 1 \
https://github.com/tegin/account-reconcile.git \
/tmp/oca-repos/account-reconcile \
&& mv /tmp/oca-repos/account-reconcile/account_reconcile_oca \
/newroot/opt/odoo/additional_addons/ \
# && git clone -b 16.0 --depth 1 \
# https://github.com/OCA/account-reconcile.git \
# /tmp/oca-repos/account-reconcile \
# Until migrated to OCA (https://github.com/OCA/bank-statement-import/pull/535)
&& git clone -b 16.0-mig-account_statement_import --depth 1 \
https://github.com/sonhd91/bank-statement-import.git \
/tmp/oca-repos/bank-statement-import \
&& mv /tmp/oca-repos/bank-statement-import/account_statement_import_base \
/tmp/oca-repos/bank-statement-import/account_statement_import_file \
/newroot/opt/odoo/additional_addons/ \
# && git clone -b 16.0 --depth 1 \
# https://github.com/OCA/bank-statement-import.git \
# /tmp/oca-repos/bank-statement-import \
# && 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 \
# /newroot/opt/odoo/additional_addons/ \
# && git clone -b 16.0 --depth 1 \
# https://github.com/OCA/crm.git \
# /tmp/oca-repos/crm \
# && mv /tmp/oca-repos/crm/crm_stage_probability \
# /newroot/opt/odoo/additional_addons/ \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/l10n-france.git \
/tmp/oca-repos/l10n-france \
&& mv /tmp/oca-repos/l10n-france/l10n_fr_siret \
/tmp/oca-repos/l10n-france/l10n_fr_siret_lookup \
/newroot/opt/odoo/additional_addons/ \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/partner-contact.git \
/tmp/oca-repos/partner-contact \
&& mv /tmp/oca-repos/partner-contact/partner_disable_gravatar \
/tmp/oca-repos/partner-contact/partner_firstname \
/newroot/opt/odoo/additional_addons/ \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/project.git \
/tmp/oca-repos/project \
&& mv /tmp/oca-repos/project/project_task_default_stage \
/tmp/oca-repos/project/project_template \
/newroot/opt/odoo/additional_addons/ \
# && git clone -b 16.0 --depth 1 \
# https://github.com/OCA/server-auth.git \
# /tmp/oca-repos/server-auth \
# && mv /tmp/oca-repos/server-auth/password_security \
# /newroot/opt/odoo/additional_addons/ \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/server-brand.git \
/tmp/oca-repos/server-brand \
&& 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 \
/newroot/opt/odoo/additional_addons/ \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/server-tools.git \
/tmp/oca-repos/server-tools \
&& mv /tmp/oca-repos/server-tools/base_view_inheritance_extension \
/tmp/oca-repos/server-tools/module_change_auto_install \
/newroot/opt/odoo/additional_addons/ \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/server-ux.git \
/tmp/oca-repos/server-ux \
&& mv /tmp/oca-repos/server-ux/server_action_mass_edit \
/newroot/opt/odoo/additional_addons/ \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/social.git \
/tmp/oca-repos/social \
&& mv /tmp/oca-repos/social/mail_debrand \
# /tmp/oca-repos/social/mail_tracking \ # https://github.com/OCA/social/pull/1029
/newroot/opt/odoo/additional_addons/ \
&& git clone -b 16.0 --depth 1 \
https://github.com/OCA/web.git \
/tmp/oca-repos/web \
&& mv /tmp/oca-repos/web/web_environment_ribbon \
# /tmp/oca-repos/web/web_responsive \
# /tmp/oca-repos/web/web_no_bubble \
/tmp/oca-repos/web/web_refresher \
/tmp/oca-repos/web/web_theme_classic \
/newroot/opt/odoo/additional_addons/ \
&& rm -rf /tmp/oca-repos/ \
&& find /newroot/opt/odoo/additional_addons/*/i18n/ -type f -not -name 'fr.po' -delete \
&& git clone -b 16.0 --depth 1 \
https://sources.le-filament.com/lefilament/remove_login_links.git \
/newroot/opt/odoo/private_addons/remove_login_links \
&& git clone -b 16.0 --depth 1 \
https://sources.le-filament.com/lefilament/lefilament_release_agent.git \
/newroot/opt/odoo/private_addons/lefilament_release_agent
# Fix a ldap library bug.
RUN echo -n "INPUT ( libldap.so )" > /usr/lib/libldap_r.so
# Install Python requirements.
RUN pip install --requirement /newroot/opt/odoo/odoo/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 install astor openupgradelib phonenumbers python-stdnum>=1.18 PyYAML zxcvbn
# Only copy libraries of needed binaries to new root.
RUN ls \
/lib/libz.so* \
/usr/bin/python3* \
/usr/lib/libexpat.so* \
/usr/lib/libfontconfig.so* \
/usr/lib/libfreetype.so* \
/usr/lib/libjpeg.so* \
/usr/lib/libpq.so* \
/usr/lib/libpython3.so* \
/usr/lib/python3.10/lib-dynload/*.so \
/usr/lib/python3.10/site-packages/*.so \
/usr/lib/libX11.so* \
/usr/lib/libXrender.so* \
> to_copy \
&& xargs -a to_copy -I R ldd R \
| tr -s '[:blank:]' '\n' \
| grep '^/' \
| sed 's/://' \
| sort -u \
| xargs cp -aL --parents -t /newroot/ \
&& xargs -a to_copy cp -a --parents -t /newroot/
# Copy Python libraries.
RUN cp -a --parents \
/usr/lib/python3.10/ \
/newroot
COPY --from=wkhtmltopdf /bin/wkhtmltopdf /newroot/bin/wkhtmltopdf
COPY ./entrypoint-scratch.sh /newroot/entrypoint.sh
# Add odoo user.
RUN echo 'odoo:x:1:1:::' >> /newroot/etc/passwd \
&& echo 'odoo:x:1:' >> /newroot/etc/group \
&& chown -R 1:1 /newroot/opt/odoo/ \
&& chmod 555 /newroot/entrypoint.sh \
&& mkdir /newroot/tmp \
&& chmod 1777 /newroot/tmp
# Final image.
FROM scratch
COPY --from=build /newroot /
# 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="16.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"