Files

230 строки
6.1 KiB
Docker

# syntax=docker/dockerfile:1.9
# Build: podman build -t odoo-oca:18 -f odoo-oca.ContainerFile .
# Export: podman save -o /home/badstorm/odoo-oca-18.tar localhost/odoo-oca:18
# syntax=docker/dockerfile:1.9
# Build: podman build -t odoo:18-debian13 -f odoo.ContainerFile .
FROM debian:13-slim
ENV DEBIAN_FRONTEND=noninteractive
ENV ODOO_BRANCH=18.0
ENV VENV_PATH=/opt/odoo/venv18
ENV DB_HOST=postgres
ENV DB_PORT=5432
ENV DB_USER=odoo
ENV DB_PASSWORD=odoo
ENV ADMIN_PASSWD=my_admin_password
RUN apt-get update && apt-get install -y --no-install-recommends \
git wget curl ca-certificates \
python3 python3.13-dev python3-dev python3-venv python3-pip \
build-essential gcc g++ make pkg-config \
postgresql-client xfonts-base \
libxml2-dev libxslt1-dev zlib1g-dev \
libjpeg-dev libpng-dev libopenjp2-7-dev libtiff-dev \
libfreetype6-dev liblcms2-dev \
libssl-dev libffi-dev libpq-dev libldap2-dev libsasl2-dev \
&& rm -rf /var/lib/apt/lists/*
RUN useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
RUN mkdir -p \
/opt/odoo/addons18/OCA \
/opt/odoo/addons18/custom \
/opt/odoo/data/filestore \
/opt/odoo/log \
/etc/odoo \
&& chown -R odoo:odoo /opt/odoo /etc/odoo
WORKDIR /opt/odoo
RUN git clone https://github.com/OCA/OCB.git \
--depth=1 --branch=${ODOO_BRANCH} --single-branch \
/opt/odoo/18.0
RUN set -eux; \
for repo in \
account-analytic \
account-budgeting \
account-closing \
account-financial-reporting \
account-financial-tools \
account-fiscal-rule \
account-invoice-reporting \
account-invoicing \
account-payment \
account-reconcile \
agreement \
ai \
automation \
bank-payment \
bank-payment-alternative \
bank-statement-import \
brand \
calendar \
commission \
community-data-files \
connector \
connector-interfaces \
connector-telephony \
contract \
credit-control \
crm \
currency \
data-protection \
ddmrp \
delivery-carrier \
dms \
donation \
e-commerce \
edi \
edi-framework \
edi-voxel \
event \
field-service \
fleet \
geospatial \
helpdesk \
hr \
hr-attendance \
hr-expense \
hr-holidays \
interface-github \
intrastat-extrastat \
iot \
knowledge \
l10n-belgium \
l10n-brazil \
l10n-colombia \
l10n-ecuador \
l10n-finland \
l10n-france \
l10n-germany \
l10n-iran \
l10n-italy \
l10n-japan \
l10n-mexico \
l10n-netherlands \
l10n-portugal \
l10n-romania \
l10n-spain \
l10n-switzerland \
l10n-thailand \
l10n-usa \
mail \
maintenance \
management-system \
manufacture \
manufacture-reporting \
margin-analysis \
mass-mailing \
mis-builder \
multi-company \
operating-unit \
partner-contact \
payroll \
pms \
pos \
product-attribute \
product-configurator \
product-pack \
product-variant \
project \
purchase-reporting \
purchase-workflow \
queue \
repair \
reporting-engine \
report-print-send \
rest-framework \
rma \
sale-blanket \
sale-channel \
sale-promotion \
sale-reporting \
sale-workflow \
search-engine \
server-auth \
server-backend \
server-brand \
server-env \
server-tools \
server-ux \
shopfloor-app \
sign \
social \
spreadsheet \
stock-logistics-availability \
stock-logistics-barcode \
stock-logistics-interfaces \
stock-logistics-orderpoint \
stock-logistics-putaway \
stock-logistics-release-channel \
stock-logistics-reporting \
stock-logistics-request \
stock-logistics-reservation \
stock-logistics-shopfloor \
stock-logistics-tracking \
stock-logistics-transport \
stock-logistics-warehouse \
stock-logistics-workflow \
storage \
survey \
timesheet \
vertical-association \
web \
web-api \
web-api-contrib \
website \
; do \
git clone https://github.com/OCA/${repo}.git \
--depth=1 \
--branch=${ODOO_BRANCH} \
--single-branch \
/opt/odoo/addons18/OCA/${repo}; \
done
RUN git clone https://gitlab.com/PNLUG/Odoo/repository/iso_addons.git \
--depth=1 --branch=${ODOO_BRANCH} --single-branch \
/opt/odoo/addons18/custom/iso_addons
RUN python3 -m venv ${VENV_PATH}
RUN ${VENV_PATH}/bin/pip install --upgrade pip setuptools wheel \
&& ${VENV_PATH}/bin/pip install \
pypdf phonenumbers asn1crypto codicefiscale unidecode psycopg2-binary \
paramiko==3.5.1 pysftp packaging pyPDF2 cryptography \
-r /opt/odoo/18.0/requirements.txt \
-r /opt/odoo/addons18/OCA/l10n-italy/requirements.txt
RUN ADDONS_PATH="/opt/odoo/18.0/addons,/opt/odoo/18.0/odoo/addons"; \
for d in /opt/odoo/addons18/OCA/*; do \
ADDONS_PATH="${ADDONS_PATH},${d}"; \
done; \
ADDONS_PATH="${ADDONS_PATH},/opt/odoo/addons18/custom/iso_addons"; \
printf "[options]\n\
admin_passwd = ${ADMIN_PASSWD}\n\
db_host = ${DB_HOST}\n\
db_port = ${DB_PORT}\n\
db_user = ${DB_USER}\n\
db_password = ${DB_PASSWORD}\n\
addons_path = ${ADDONS_PATH}\n\
logfile = /opt/odoo/log/odoo.log\n\
data_dir = /opt/odoo/data\n\
proxy_mode = True\n\
" > /etc/odoo/odoo18.conf \
&& chown -R odoo:odoo /opt/odoo /etc/odoo \
&& chmod 640 /etc/odoo/odoo18.conf \
&& chmod -R 775 /opt/odoo/data /opt/odoo/log
EXPOSE 8069 8072
VOLUME ["/opt/odoo/addons18/custom", "/opt/odoo/data", "/opt/odoo/log"]
USER odoo
WORKDIR /opt/odoo/18.0
CMD ["/opt/odoo/venv18/bin/python", "/opt/odoo/18.0/odoo-bin", "-c", "/etc/odoo/odoo18.conf"]