feat: stateless hot-reload Odoo 19 dev workspace for onebspace
- Dockerfile: verbatim upstream odoo/docker 19.0 + pip install requirements.txt - easypanel.schema.json: source.type=dockerfile with inline Dockerfile - deploy.py: calls Easypanel tRPC API directly (bypass MCP that only supports image) - .gitea/workflows/build.yml: optional Gitea Actions CI - README.md: full research + reproduction steps
This commit is contained in:
1 parent
2b34aec75c
commit
fff19a9e17
9 files changed
+829
-1
No files matched your search
+133
@@ -0,0 +1,133 @@
|
||||
# =============================================================================
|
||||
# os-dev — custom Odoo 19 image
|
||||
#
|
||||
# This Dockerfile is a VERBATIM copy of the official one from
|
||||
# https://github.com/odoo/docker/blob/master/19.0/Dockerfile (maintained by
|
||||
# Odoo S.A. for the `odoo` Docker Official Image on Docker Hub), with one
|
||||
# addition: `pip install -r requirements.txt` after the Odoo .deb install,
|
||||
# so the image can carry custom Python dependencies for our addons.
|
||||
#
|
||||
# Live-coding workflow:
|
||||
# * docker compose up -d (binds the host's os-dev/ to /mnt/os-dev)
|
||||
# * Edit any .py in os-dev/ -> --dev=reload picks it up automatically
|
||||
# * requirements.txt change -> `docker compose build` (only this triggers
|
||||
# a rebuild; otherwise the layer cache is reused)
|
||||
#
|
||||
# The SHA-pinned release matches the 1b-agent/odoo-docker-upstream mirror
|
||||
# we use as source of truth.
|
||||
# =============================================================================
|
||||
|
||||
FROM ubuntu:noble
|
||||
LABEL maintainer="one_b_os <[email protected]>"
|
||||
|
||||
SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
|
||||
|
||||
# Generate locale C.UTF-8 for postgres and general locale data
|
||||
ENV LANG=en_US.UTF-8
|
||||
|
||||
# Retrieve the target architecture to install the correct wkhtmltopdf package
|
||||
ARG TARGETARCH
|
||||
|
||||
# Install some deps, lessc and less-plugin-clean-css, and wkhtmltopdf
|
||||
RUN apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
dirmngr \
|
||||
fonts-noto-cjk \
|
||||
gnupg \
|
||||
libssl-dev \
|
||||
node-less \
|
||||
npm \
|
||||
python3-magic \
|
||||
python3-num2words \
|
||||
python3-odf \
|
||||
python3-pdfminer \
|
||||
python3-pip \
|
||||
python3-phonenumbers \
|
||||
python3-pyldap \
|
||||
python3-qrcode \
|
||||
python3-renderpm \
|
||||
python3-setuptools \
|
||||
python3-slugify \
|
||||
python3-vobject \
|
||||
python3-watchdog \
|
||||
python3-xlrd \
|
||||
python3-xlwt \
|
||||
xz-utils && \
|
||||
if [ -z "${TARGETARCH}" ]; then \
|
||||
TARGETARCH="$(dpkg --print-architecture)"; \
|
||||
fi; \
|
||||
WKHTMLTOPDF_ARCH=${TARGETARCH} && \
|
||||
case ${TARGETARCH} in \
|
||||
"amd64") WKHTMLTOPDF_ARCH=amd64 && WKHTMLTOPDF_SHA=967390a759707337b46d1c02452e2bb6b2dc6d59 ;; \
|
||||
"arm64") WKHTMLTOPDF_SHA=90f6e69896d51ef77339d3f3a20f8582bdf496cc ;; \
|
||||
"ppc64le" | "ppc64el") WKHTMLTOPDF_ARCH=ppc64el && WKHTMLTOPDF_SHA=5312d7d34a25b321282929df82e3574319aed25c ;; \
|
||||
esac \
|
||||
&& curl -o wkhtmltox.deb -sSL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_${WKHTMLTOPDF_ARCH}.deb \
|
||||
&& echo ${WKHTMLTOPDF_SHA} wkhtmltox.deb | sha1sum -c - \
|
||||
&& apt-get install -y --no-install-recommends ./wkhtmltox.deb \
|
||||
&& rm -rf /var/lib/apt/lists/* wkhtmltox.deb
|
||||
|
||||
# install latest postgresql-client
|
||||
RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ noble-pgdg main' > /etc/apt/sources.list.d/pgdg.list \
|
||||
&& GNUPGHOME="$(mktemp -d)" \
|
||||
&& export GNUPGHOME \
|
||||
&& repokey='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8' \
|
||||
&& gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "${repokey}" \
|
||||
&& gpg --batch --armor --export "${repokey}" > /etc/apt/trusted.gpg.d/pgdg.gpg.asc \
|
||||
&& gpgconf --kill all \
|
||||
&& rm -rf "$GNUPGHOME" \
|
||||
&& apt-get update \
|
||||
&& apt-get install --no-install-recommends -y postgresql-client \
|
||||
&& rm -f /etc/apt/sources.list.d/pgdg.list \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install rtlcss (on Debian buster)
|
||||
RUN npm install -g rtlcss
|
||||
|
||||
# Install Odoo
|
||||
ENV ODOO_VERSION=19.0
|
||||
ARG ODOO_RELEASE=20260817
|
||||
ARG ODOO_SHA=7e6c102efc7e2ad56801432fef7e2e0d2f703e5a
|
||||
RUN curl -o odoo.deb -sSL http://nightly.odoo.com/${ODOO_VERSION}/nightly/deb/odoo_${ODOO_VERSION}.${ODOO_RELEASE}_all.deb \
|
||||
&& echo "${ODOO_SHA} odoo.deb" | sha1sum -c - \
|
||||
&& apt-get update \
|
||||
&& apt-get -y install --no-install-recommends ./odoo.deb \
|
||||
&& rm -rf /var/lib/apt/lists/* odoo.deb
|
||||
|
||||
# =============================================================================
|
||||
# os-dev addition over the official image:
|
||||
# Install our custom Python deps from the repo's requirements.txt.
|
||||
# --break-system-packages is required because Ubuntu 24.04 ships PEP 668.
|
||||
# This is the ONE thing that requires an image rebuild; everything else in
|
||||
# the image layers above is cached and reused.
|
||||
# =============================================================================
|
||||
COPY requirements.txt /tmp/requirements.txt
|
||||
RUN pip3 install --no-cache-dir --break-system-packages -r /tmp/requirements.txt \
|
||||
&& rm /tmp/requirements.txt
|
||||
|
||||
# Copy entrypoint script and Odoo configuration file (verbatim from official)
|
||||
COPY ./entrypoint.sh /
|
||||
COPY ./odoo.conf /etc/odoo/
|
||||
|
||||
# Set permissions and Mount /var/lib/odoo to allow restoring filestore and /mnt/extra-addons for users addons
|
||||
RUN chown odoo /etc/odoo/odoo.conf \
|
||||
&& mkdir -p /mnt/extra-addons \
|
||||
&& chown -R odoo /mnt/extra-addons
|
||||
VOLUME ["/var/lib/odoo", "/mnt/extra-addons"]
|
||||
|
||||
# Expose Odoo services
|
||||
EXPOSE 8069 8071 8072
|
||||
|
||||
# Set the default config file
|
||||
ENV ODOO_RC=/etc/odoo/odoo.conf
|
||||
|
||||
COPY wait-for-psql.py /usr/local/bin/wait-for-psql.py
|
||||
|
||||
# Set default user when running the container
|
||||
USER odoo
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["odoo"]
|
||||
Reference in new issue
Block a user