Skip to content

Commit a9380ea

Browse files
committed
Rework
1 parent 72dbf50 commit a9380ea

32 files changed

+251
-1575
lines changed

.github/workflows/docker-build.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Build and Push Docker Image
2+
3+
on:
4+
push:
5+
branches: [ "*" ] # Todas las branches
6+
pull_request:
7+
branches: [ "*" ] # PRs a cualquier branch
8+
9+
env:
10+
REGISTRY: ghcr.io
11+
IMAGE_NAME: ${{ github.repository }}
12+
13+
jobs:
14+
build:
15+
runs-on: ubuntu-latest
16+
permissions:
17+
contents: read
18+
packages: write
19+
20+
steps:
21+
- name: Checkout repository
22+
uses: actions/checkout@v4
23+
24+
- name: Log in to Container Registry
25+
if: github.event_name != 'pull_request'
26+
uses: docker/login-action@v3
27+
with:
28+
registry: ${{ env.REGISTRY }}
29+
username: ${{ github.actor }}
30+
password: ${{ secrets.GITHUB_TOKEN }}
31+
32+
- name: Extract metadata
33+
id: meta
34+
uses: docker/metadata-action@v5
35+
with:
36+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
37+
tags: |
38+
# Tag con el nombre de la branch
39+
type=ref,event=branch
40+
# Tag con el nombre de la branch del PR
41+
type=ref,event=pr
42+
# Tag latest solo para main/master
43+
type=raw,value=latest,enable={{is_default_branch}}
44+
# Tag con sha del commit
45+
type=sha,prefix={{branch}}-
46+
47+
- name: Set up Docker Buildx
48+
uses: docker/setup-buildx-action@v3
49+
50+
- name: Build and push Docker image
51+
uses: docker/build-push-action@v5
52+
with:
53+
context: .
54+
platforms: linux/amd64,linux/arm64
55+
push: ${{ github.event_name != 'pull_request' }}
56+
tags: ${{ steps.meta.outputs.tags }}
57+
labels: ${{ steps.meta.outputs.labels }}
58+
cache-from: type=gha
59+
cache-to: type=gha,mode=max

Dockerfile

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
FROM ubuntu:noble
2+
LABEL maintainer="GauchoCode [email protected]"
3+
4+
SHELL ["/bin/bash", "-xo", "pipefail", "-c"]
5+
6+
# Target arch for wkhtmltopdf
7+
ARG TARGETARCH
8+
9+
# ===== Base deps + wkhtmltopdf =====
10+
RUN apt-get update && \
11+
DEBIAN_FRONTEND=noninteractive \
12+
apt-get install -y --no-install-recommends \
13+
ca-certificates \
14+
curl \
15+
dirmngr \
16+
fonts-noto-cjk \
17+
gnupg \
18+
libssl-dev \
19+
node-less \
20+
npm \
21+
python3-magic \
22+
python3-num2words \
23+
python3-odf \
24+
python3-pdfminer \
25+
python3-pip \
26+
python3-phonenumbers \
27+
python3-pyldap \
28+
python3-qrcode \
29+
python3-renderpm \
30+
python3-setuptools \
31+
python3-slugify \
32+
python3-vobject \
33+
python3-watchdog \
34+
python3-xlrd \
35+
python3-xlwt \
36+
xz-utils \
37+
# --- extras para AFIP / firmas XML ---
38+
python3-jwt \
39+
libxml2 \
40+
libxmlsec1 \
41+
libxmlsec1-openssl \
42+
build-essential \
43+
python3-dev \
44+
&& if [ -z "${TARGETARCH}" ]; then TARGETARCH="$(dpkg --print-architecture)"; fi \
45+
&& WKHTMLTOPDF_ARCH=${TARGETARCH} \
46+
&& case ${TARGETARCH} in \
47+
"amd64") WKHTMLTOPDF_ARCH=amd64 && WKHTMLTOPDF_SHA=967390a759707337b46d1c02452e2bb6b2dc6d59 ;; \
48+
"arm64") WKHTMLTOPDF_SHA=90f6e69896d51ef77339d3f3a20f8582bdf496cc ;; \
49+
"ppc64le" | "ppc64el") WKHTMLTOPDF_ARCH=ppc64el && WKHTMLTOPDF_SHA=5312d7d34a25b321282929df82e3574319aed25c ;; \
50+
esac \
51+
&& 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 \
52+
&& echo ${WKHTMLTOPDF_SHA} wkhtmltox.deb | sha1sum -c - \
53+
&& apt-get install -y --no-install-recommends ./wkhtmltox.deb \
54+
&& rm -rf /var/lib/apt/lists/* wkhtmltox.deb
55+
56+
# ===== PostgreSQL client =====
57+
RUN echo 'deb http://apt.postgresql.org/pub/repos/apt/ noble-pgdg main' > /etc/apt/sources.list.d/pgdg.list \
58+
&& GNUPGHOME="$(mktemp -d)" \
59+
&& export GNUPGHOME \
60+
&& repokey='B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8' \
61+
&& gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "${repokey}" \
62+
&& gpg --batch --armor --export "${repokey}" > /etc/apt/trusted.gpg.d/pgdg.gpg.asc \
63+
&& gpgconf --kill all \
64+
&& rm -rf "$GNUPGHOME" \
65+
&& apt-get update \
66+
&& apt-get install --no-install-recommends -y postgresql-client \
67+
&& rm -f /etc/apt/sources.list.d/pgdg.list \
68+
&& rm -rf /var/lib/apt/lists/*
69+
70+
# ===== rtlcss =====
71+
RUN npm install -g rtlcss
72+
73+
# ===== Odoo 18 =====
74+
ENV ODOO_VERSION 18.0
75+
ARG ODOO_RELEASE=20250918
76+
ARG ODOO_SHA=87dee1ca919a9920f1ad1b4c08933052e47c0add
77+
RUN curl -o odoo.deb -sSL http://nightly.odoo.com/${ODOO_VERSION}/nightly/deb/odoo_${ODOO_VERSION}.${ODOO_RELEASE}_all.deb \
78+
&& echo "${ODOO_SHA} odoo.deb" | sha1sum -c - \
79+
&& apt-get update \
80+
&& apt-get -y install --no-install-recommends ./odoo.deb \
81+
&& rm -rf /var/lib/apt/lists/* odoo.deb
82+
83+
# ===== Python dependencies from requirements.txt =====
84+
COPY requirements.txt /tmp/requirements.txt
85+
RUN pip install --no-cache-dir --break-system-packages -r /tmp/requirements.txt \
86+
&& rm /tmp/requirements.txt \
87+
&& python3 -c "import jwt, pyafipws, pysimplesoap; \
88+
print('JWT OK', getattr(jwt,'__version__','unknown')); \
89+
print('pyafipws OK', getattr(pyafipws,'__version__','unknown')); \
90+
print('pysimplesoap OK', getattr(pysimplesoap,'__version__','unknown'))"
91+
92+
# ===== Config y entrypoint =====
93+
COPY ./entrypoint.sh /
94+
COPY ./odoo.conf /etc/odoo/
95+
96+
RUN chown odoo /etc/odoo/odoo.conf \
97+
&& mkdir -p /mnt/extra-addons \
98+
&& chown -R odoo /mnt/extra-addons
99+
100+
VOLUME ["/var/lib/odoo", "/mnt/extra-addons"]
101+
102+
EXPOSE 8069 8071 8072
103+
ENV ODOO_RC /etc/odoo/odoo.conf
104+
105+
COPY wait-for-psql.py /usr/local/bin/wait-for-psql.py
106+
107+
USER odoo
108+
ENTRYPOINT ["/entrypoint.sh"]
109+
CMD ["odoo"]

README.md

Lines changed: 0 additions & 82 deletions
This file was deleted.

backup_restore.sh

Lines changed: 0 additions & 102 deletions
This file was deleted.

0 commit comments

Comments
 (0)