diff --git a/11.0.Dockerfile b/11.0.Dockerfile deleted file mode 100644 index 98c543a0..00000000 --- a/11.0.Dockerfile +++ /dev/null @@ -1,154 +0,0 @@ -FROM debian:9 - -# Enable Odoo user and filestore -RUN useradd -md /home/odoo -s /bin/false odoo \ - && mkdir -p /var/lib/odoo \ - && chown -R odoo:odoo /var/lib/odoo \ - && sync -VOLUME ["/var/lib/odoo"] -EXPOSE 8069 8072 - -# Subimage triggers -ONBUILD ENTRYPOINT ["/opt/odoo/common/entrypoint"] -ONBUILD CMD ["/usr/local/bin/odoo"] -ONBUILD ARG AGGREGATE=true -ONBUILD ARG DEPTH_DEFAULT=1 -ONBUILD ARG DEPTH_MERGE=100 -ONBUILD ARG CLEAN=true -ONBUILD ARG COMPILE=true -ONBUILD ARG CONFIG_BUILD=true -ONBUILD ARG PIP_INSTALL_ODOO=true -ONBUILD ARG ADMIN_PASSWORD=admin -ONBUILD ARG SMTP_SERVER=smtp -ONBUILD ARG PROXY_MODE=false -ONBUILD ARG WITHOUT_DEMO=all -ONBUILD ARG PGUSER=odoo -ONBUILD ARG PGPASSWORD=odoopassword -ONBUILD ARG PGHOST=db -ONBUILD ARG PGDATABASE=prod -# Config variables -ONBUILD ENV ADMIN_PASSWORD="$ADMIN_PASSWORD" \ - UNACCENT="$UNACCENT" \ - PGUSER="$PGUSER" \ - PGPASSWORD="$PGPASSWORD" \ - PGHOST="$PGHOST" \ - PGDATABASE="$PGDATABASE" \ - PROXY_MODE="$PROXY_MODE" \ - SMTP_SERVER="$SMTP_SERVER" \ - WITHOUT_DEMO="$WITHOUT_DEMO" -ONBUILD ARG LOCAL_CUSTOM_DIR=./custom -ONBUILD COPY $LOCAL_CUSTOM_DIR /opt/odoo/custom -# https://docs.python.org/2.7/library/logging.html#levels -ONBUILD ARG LOG_LEVEL=INFO -ONBUILD RUN mkdir -p /opt/odoo/custom/ssh \ - && ln -s /opt/odoo/custom/ssh ~root/.ssh \ - && chmod -R u=rwX,go= /opt/odoo/custom/ssh \ - && sync -ONBUILD RUN ["/opt/odoo/common/build"] -ONBUILD USER odoo - -ARG WKHTMLTOPDF_VERSION=0.12.4 -ARG WKHTMLTOPDF_CHECKSUM='049b2cdec9a8254f0ef8ac273afaf54f7e25459a273e27189591edc7d7cf29db' -ENV DEPTH_DEFAULT=1 \ - DEPTH_MERGE=100 \ - EMAIL=https://hub.docker.com/r/tecnativa/odoo \ - GIT_AUTHOR_NAME=docker-odoo \ - LC_ALL=C.UTF-8 \ - NODE_PATH=/usr/local/lib/node_modules:/usr/lib/node_modules \ - OPENERP_SERVER=/opt/odoo/auto/odoo.conf \ - PATH="~/.local/bin:$PATH" \ - PUDB_RDB_HOST=0.0.0.0 \ - PUDB_RDB_PORT=6899 \ - UNACCENT=true \ - WAIT_DB=true \ - WDB_NO_BROWSER_AUTO_OPEN=True \ - WDB_SOCKET_SERVER=wdb \ - WDB_WEB_PORT=1984 \ - WDB_WEB_SERVER=localhost - -# Other requirements and recommendations to run Odoo -# See https://github.com/$ODOO_SOURCE/blob/$ODOO_VERSION/debian/control -RUN apt-get -qq update \ - && apt-get -yqq upgrade \ - && apt-get install -yqq --no-install-recommends \ - python3 ruby-compass \ - fontconfig libfreetype6 libxml2 libxslt1.1 libjpeg62-turbo zlib1g \ - libfreetype6 liblcms2-2 libtiff5 tk tcl libpq5 \ - libldap-2.4-2 libsasl2-2 libx11-6 libxext6 libxrender1 \ - locales-all zlibc \ - bzip2 ca-certificates curl gettext-base git gnupg2 nano \ - openssh-client postgresql-client telnet xz-utils \ - && curl https://bootstrap.pypa.io/get-pip.py | python3 /dev/stdin --no-cache-dir \ - && curl -sL https://deb.nodesource.com/setup_6.x | bash - \ - && apt-get install -yqq nodejs \ - && apt-get -yqq purge python2.7 \ - && apt-get -yqq autoremove \ - && rm -Rf /var/lib/apt/lists/* - -# Special case to get latest Less and PhantomJS -RUN ln -s /usr/bin/nodejs /usr/local/bin/node \ - && npm install -g less phantomjs-prebuilt \ - && rm -Rf ~/.npm /tmp/* - -# Special case to get bootstrap-sass, required by Odoo for Sass assets -RUN gem install --no-rdoc --no-ri --no-update-sources bootstrap-sass --version '<4' \ - && rm -Rf ~/.gem /var/lib/gems/*/cache/ - -# Special case for wkhtmltox -RUN curl -SLo wkhtmltox.tar.xz https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox-${WKHTMLTOPDF_VERSION}_linux-generic-amd64.tar.xz \ - && echo "${WKHTMLTOPDF_CHECKSUM} wkhtmltox.tar.xz" | sha256sum -c - \ - && tar --strip-components 1 -C /usr/local/ -xf wkhtmltox.tar.xz \ - && rm wkhtmltox.tar.xz \ - && wkhtmltopdf --version - -# Other facilities -WORKDIR /opt/odoo -RUN pip install --no-cache-dir \ - astor git-aggregator openupgradelib ptvsd==3.0.0 pudb wdb -COPY bin/* /usr/local/bin/ -COPY lib/odoobaselib /usr/local/lib/python3.5/dist-packages/odoobaselib -COPY build.d common/build.d -COPY conf.d common/conf.d -COPY entrypoint.d common/entrypoint.d -RUN mkdir -p auto/addons custom/src/private \ - && ln /usr/local/bin/direxec common/entrypoint \ - && ln /usr/local/bin/direxec common/build \ - && chmod -R a+rx common/entrypoint* common/build* /usr/local/bin \ - && chmod -R a+rX /usr/local/lib/python3.5/dist-packages/odoobaselib \ - && ln -s $(which python3) /usr/local/bin/python \ - && sync - -# Execute installation script by Odoo version -# This is at the end to benefit from cache at build time -# https://docs.docker.com/engine/reference/builder/#/impact-on-build-caching -ARG ODOO_SOURCE=OCA/OCB -ARG ODOO_VERSION=11.0 -ENV ODOO_VERSION="$ODOO_VERSION" -RUN apt-get update \ - && apt-get install -y \ - build-essential \ - libevent-dev \ - libjpeg-dev \ - libldap2-dev \ - libsasl2-dev \ - libssl-dev \ - libxml2-dev \ - libxslt1-dev \ - python3-dev \ - zlib1g-dev \ - && pip install --no-cache-dir -r https://raw.githubusercontent.com/$ODOO_SOURCE/$ODOO_VERSION/requirements.txt \ - && python3 -m compileall -q /usr/local/lib/python3.5/ || true \ - && apt-get purge -yqq build-essential '*-dev' \ - && apt-mark -qq manual '*' \ - && rm -Rf /var/lib/apt/lists/* - -# Metadata -ARG VCS_REF -ARG BUILD_DATE -ARG VERSION -LABEL org.label-schema.schema-version="$VERSION" \ - org.label-schema.vendor=Tecnativa \ - org.label-schema.license=Apache-2.0 \ - org.label-schema.build-date="$BUILD_DATE" \ - org.label-schema.vcs-ref="$VCS_REF" \ - org.label-schema.vcs-url="https://github.com/Tecnativa/docker-odoo-base" diff --git a/11.0.Dockerfile b/11.0.Dockerfile new file mode 120000 index 00000000..1d1fe94d --- /dev/null +++ b/11.0.Dockerfile @@ -0,0 +1 @@ +Dockerfile \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..98c543a0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,154 @@ +FROM debian:9 + +# Enable Odoo user and filestore +RUN useradd -md /home/odoo -s /bin/false odoo \ + && mkdir -p /var/lib/odoo \ + && chown -R odoo:odoo /var/lib/odoo \ + && sync +VOLUME ["/var/lib/odoo"] +EXPOSE 8069 8072 + +# Subimage triggers +ONBUILD ENTRYPOINT ["/opt/odoo/common/entrypoint"] +ONBUILD CMD ["/usr/local/bin/odoo"] +ONBUILD ARG AGGREGATE=true +ONBUILD ARG DEPTH_DEFAULT=1 +ONBUILD ARG DEPTH_MERGE=100 +ONBUILD ARG CLEAN=true +ONBUILD ARG COMPILE=true +ONBUILD ARG CONFIG_BUILD=true +ONBUILD ARG PIP_INSTALL_ODOO=true +ONBUILD ARG ADMIN_PASSWORD=admin +ONBUILD ARG SMTP_SERVER=smtp +ONBUILD ARG PROXY_MODE=false +ONBUILD ARG WITHOUT_DEMO=all +ONBUILD ARG PGUSER=odoo +ONBUILD ARG PGPASSWORD=odoopassword +ONBUILD ARG PGHOST=db +ONBUILD ARG PGDATABASE=prod +# Config variables +ONBUILD ENV ADMIN_PASSWORD="$ADMIN_PASSWORD" \ + UNACCENT="$UNACCENT" \ + PGUSER="$PGUSER" \ + PGPASSWORD="$PGPASSWORD" \ + PGHOST="$PGHOST" \ + PGDATABASE="$PGDATABASE" \ + PROXY_MODE="$PROXY_MODE" \ + SMTP_SERVER="$SMTP_SERVER" \ + WITHOUT_DEMO="$WITHOUT_DEMO" +ONBUILD ARG LOCAL_CUSTOM_DIR=./custom +ONBUILD COPY $LOCAL_CUSTOM_DIR /opt/odoo/custom +# https://docs.python.org/2.7/library/logging.html#levels +ONBUILD ARG LOG_LEVEL=INFO +ONBUILD RUN mkdir -p /opt/odoo/custom/ssh \ + && ln -s /opt/odoo/custom/ssh ~root/.ssh \ + && chmod -R u=rwX,go= /opt/odoo/custom/ssh \ + && sync +ONBUILD RUN ["/opt/odoo/common/build"] +ONBUILD USER odoo + +ARG WKHTMLTOPDF_VERSION=0.12.4 +ARG WKHTMLTOPDF_CHECKSUM='049b2cdec9a8254f0ef8ac273afaf54f7e25459a273e27189591edc7d7cf29db' +ENV DEPTH_DEFAULT=1 \ + DEPTH_MERGE=100 \ + EMAIL=https://hub.docker.com/r/tecnativa/odoo \ + GIT_AUTHOR_NAME=docker-odoo \ + LC_ALL=C.UTF-8 \ + NODE_PATH=/usr/local/lib/node_modules:/usr/lib/node_modules \ + OPENERP_SERVER=/opt/odoo/auto/odoo.conf \ + PATH="~/.local/bin:$PATH" \ + PUDB_RDB_HOST=0.0.0.0 \ + PUDB_RDB_PORT=6899 \ + UNACCENT=true \ + WAIT_DB=true \ + WDB_NO_BROWSER_AUTO_OPEN=True \ + WDB_SOCKET_SERVER=wdb \ + WDB_WEB_PORT=1984 \ + WDB_WEB_SERVER=localhost + +# Other requirements and recommendations to run Odoo +# See https://github.com/$ODOO_SOURCE/blob/$ODOO_VERSION/debian/control +RUN apt-get -qq update \ + && apt-get -yqq upgrade \ + && apt-get install -yqq --no-install-recommends \ + python3 ruby-compass \ + fontconfig libfreetype6 libxml2 libxslt1.1 libjpeg62-turbo zlib1g \ + libfreetype6 liblcms2-2 libtiff5 tk tcl libpq5 \ + libldap-2.4-2 libsasl2-2 libx11-6 libxext6 libxrender1 \ + locales-all zlibc \ + bzip2 ca-certificates curl gettext-base git gnupg2 nano \ + openssh-client postgresql-client telnet xz-utils \ + && curl https://bootstrap.pypa.io/get-pip.py | python3 /dev/stdin --no-cache-dir \ + && curl -sL https://deb.nodesource.com/setup_6.x | bash - \ + && apt-get install -yqq nodejs \ + && apt-get -yqq purge python2.7 \ + && apt-get -yqq autoremove \ + && rm -Rf /var/lib/apt/lists/* + +# Special case to get latest Less and PhantomJS +RUN ln -s /usr/bin/nodejs /usr/local/bin/node \ + && npm install -g less phantomjs-prebuilt \ + && rm -Rf ~/.npm /tmp/* + +# Special case to get bootstrap-sass, required by Odoo for Sass assets +RUN gem install --no-rdoc --no-ri --no-update-sources bootstrap-sass --version '<4' \ + && rm -Rf ~/.gem /var/lib/gems/*/cache/ + +# Special case for wkhtmltox +RUN curl -SLo wkhtmltox.tar.xz https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox-${WKHTMLTOPDF_VERSION}_linux-generic-amd64.tar.xz \ + && echo "${WKHTMLTOPDF_CHECKSUM} wkhtmltox.tar.xz" | sha256sum -c - \ + && tar --strip-components 1 -C /usr/local/ -xf wkhtmltox.tar.xz \ + && rm wkhtmltox.tar.xz \ + && wkhtmltopdf --version + +# Other facilities +WORKDIR /opt/odoo +RUN pip install --no-cache-dir \ + astor git-aggregator openupgradelib ptvsd==3.0.0 pudb wdb +COPY bin/* /usr/local/bin/ +COPY lib/odoobaselib /usr/local/lib/python3.5/dist-packages/odoobaselib +COPY build.d common/build.d +COPY conf.d common/conf.d +COPY entrypoint.d common/entrypoint.d +RUN mkdir -p auto/addons custom/src/private \ + && ln /usr/local/bin/direxec common/entrypoint \ + && ln /usr/local/bin/direxec common/build \ + && chmod -R a+rx common/entrypoint* common/build* /usr/local/bin \ + && chmod -R a+rX /usr/local/lib/python3.5/dist-packages/odoobaselib \ + && ln -s $(which python3) /usr/local/bin/python \ + && sync + +# Execute installation script by Odoo version +# This is at the end to benefit from cache at build time +# https://docs.docker.com/engine/reference/builder/#/impact-on-build-caching +ARG ODOO_SOURCE=OCA/OCB +ARG ODOO_VERSION=11.0 +ENV ODOO_VERSION="$ODOO_VERSION" +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + libevent-dev \ + libjpeg-dev \ + libldap2-dev \ + libsasl2-dev \ + libssl-dev \ + libxml2-dev \ + libxslt1-dev \ + python3-dev \ + zlib1g-dev \ + && pip install --no-cache-dir -r https://raw.githubusercontent.com/$ODOO_SOURCE/$ODOO_VERSION/requirements.txt \ + && python3 -m compileall -q /usr/local/lib/python3.5/ || true \ + && apt-get purge -yqq build-essential '*-dev' \ + && apt-mark -qq manual '*' \ + && rm -Rf /var/lib/apt/lists/* + +# Metadata +ARG VCS_REF +ARG BUILD_DATE +ARG VERSION +LABEL org.label-schema.schema-version="$VERSION" \ + org.label-schema.vendor=Tecnativa \ + org.label-schema.license=Apache-2.0 \ + org.label-schema.build-date="$BUILD_DATE" \ + org.label-schema.vcs-ref="$VCS_REF" \ + org.label-schema.vcs-url="https://github.com/Tecnativa/docker-odoo-base" diff --git a/hooks/build b/hooks/build index b2041cff..b122536c 100755 --- a/hooks/build +++ b/hooks/build @@ -3,6 +3,7 @@ from __future__ import print_function import json import logging import os +import sys from datetime import datetime from glob import iglob @@ -11,11 +12,12 @@ import docker CLIENT = docker.client.from_env() DEFAULT_VERSION = "11.0" DOCKER_REPO = os.environ.get("DOCKER_REPO", "tecnativa/odoo-base") -GIT_SHA1 = os.environ.get("GIT_SHA1", "") +SOURCE_COMMIT = os.environ.get("SOURCE_COMMIT", "") ODOO_VERSIONS = frozenset(os.environ.get( "ODOO_VERSIONS", "8.0 9.0 10.0 11.0").split()) logging.basicConfig(level=logging.INFO) +logging.info(sys.version) # Build version-specific images for dockerfile in iglob("*.Dockerfile"): @@ -31,7 +33,7 @@ for dockerfile in iglob("*.Dockerfile"): buildargs={ "BUILD_DATE": datetime.utcnow().isoformat(), "ODOO_VERSION": version, - "VCS_REF": GIT_SHA1, + "VCS_REF": SOURCE_COMMIT, } ) status = None @@ -41,7 +43,11 @@ for dockerfile in iglob("*.Dockerfile"): status = line["status"] print(status) if line.get("stream"): - print(line["stream"], end="") + try: + print(line["stream"], end="") + except UnicodeEncodeError: + # Python 2, like in Docker Hub + print(line["stream"].encode("utf-8"), end="") # Tag default version if DEFAULT_VERSION in ODOO_VERSIONS: diff --git a/hooks/post_push b/hooks/post_push deleted file mode 100755 index b4d31ceb..00000000 --- a/hooks/post_push +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python -import os -from glob import iglob - -import docker - -DEFAULT_VERSION = "11.0" -DOCKER_REPO = os.environ.get("DOCKER_REPO", "tecnativa/odoo-base") -DOCKER_TAG = os.environ.get("DOCKER_TAG") -IMAGE_NAME = os.environ.get("IMAGE_NAME", u"{}:{}") -CLIENT = docker.client.from_env() - -if DOCKER_TAG == "latest": - # Push other tags, that should have been built already - for image in CLIENT.images.list(DOCKER_REPO): - for tag in image.tags: - if tag != IMAGE_NAME: - CLIENT.images.push(tag) diff --git a/hooks/push b/hooks/push new file mode 100755 index 00000000..9789824f --- /dev/null +++ b/hooks/push @@ -0,0 +1,17 @@ +#!/usr/bin/env python +import logging +import os + +import docker + +DEFAULT_VERSION = "11.0" +DOCKER_REPO = os.environ.get("DOCKER_REPO", "tecnativa/odoo-base") +CLIENT = docker.client.from_env() + +logging.basicConfig(level=logging.INFO) + +# Push all tags, that should have been built already +for image in CLIENT.images.list(DOCKER_REPO): + for tag in image.tags: + logging.info("Pushing %s", tag) + CLIENT.images.push(tag)