Skip to content
Extraits de code Groupes Projets
Valider 71e9f8ef rédigé par remi-filament's avatar remi-filament
Parcourir les fichiers

Add extra URL and multi-stage build for Odoo

parent 1db567ac
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -102,6 +102,8 @@ odoo_prod: ...@@ -102,6 +102,8 @@ odoo_prod:
branch: 12.0-mig-account_bank_statement_import_ofx branch: 12.0-mig-account_bank_statement_import_ofx
modules: modules:
- account_bank_statement_import_ofx - account_bank_statement_import_ofx
extra_urls:
- "sso.le-filament.com"
odoo_nonprod_instances: odoo_nonprod_instances:
- name: odoo_test - name: odoo_test
...@@ -123,6 +125,8 @@ odoo_nonprod_instances: ...@@ -123,6 +125,8 @@ odoo_nonprod_instances:
custom_modules_oca: "{{ odoo_prod.custom_modules_oca | default([]) }}" custom_modules_oca: "{{ odoo_prod.custom_modules_oca | default([]) }}"
other_repos: "{{ odoo_prod.other_repos | default([]) }}" other_repos: "{{ odoo_prod.other_repos | default([]) }}"
other_modules: "{{ odoo_prod.other_modules | default([]) }}" other_modules: "{{ odoo_prod.other_modules | default([]) }}"
extra_urls:
- "sso.le-filament.com"
# OPTIONAL - Odoo multilingual - Will install Odoo with all languages (English and French only if set to no) # OPTIONAL - Odoo multilingual - Will install Odoo with all languages (English and French only if set to no)
odoo_multilingual: no odoo_multilingual: no
......
FROM lefilament/odoo:{{ odoo_version }}{% if odoo_multilingual is defined and odoo_multilingual %}_ml{% endif %} ## Image to get git repos
FROM lefilament/odoo:{{ odoo_version }}{% if odoo_multilingual is defined and odoo_multilingual %}_ml{% endif %} as odoo_addons
MAINTAINER Le Filament <https://le-filament.com> LABEL stage=builder
USER root USER root
{% if odoo_pip_packages is defined %}
# Install pip packages
RUN pip install {{ odoo_pip_packages }}
{% endif %}
{% if git_private_keys is defined %} {% if git_private_keys is defined %}
# Install private keys # Install private keys
COPY ./id_rsa ~root/.ssh/ COPY ./id_rsa ~root/.ssh/
{% endif %} {% endif %}
# Install private repos # Install private repos
COPY ./private/* /opt/odoo/private/ COPY ./private/* /opt/odoo/private/
RUN chown -R root:root /opt/odoo/additional_addons /opt/odoo/private_addons
RUN /opt/odoo/private/fetch_repos_addons RUN /opt/odoo/private/fetch_repos_addons
RUN /opt/odoo/private/fetch_repos RUN /opt/odoo/private/fetch_repos
## Final image
FROM lefilament/odoo:{{ odoo_version }}{% if odoo_multilingual is defined and odoo_multilingual %}_ml{% endif %} as final
USER root
COPY --from=odoo_addons --chown=odoo:odoo /opt/odoo/private_addons /opt/odoo/private_addons
COPY --from=odoo_addons --chown=odoo:odoo /opt/odoo/additional_addons /opt/odoo/additional_addons
{% if odoo_pip_packages is defined %}
# Install pip packages
RUN pip install {{ odoo_pip_packages }}
{% endif %}
# Copy Odoo configuration file # Copy Odoo configuration file
COPY ./odoo.conf /opt/odoo/etc/odoo.conf COPY --chown=odoo:odoo ./odoo.conf /opt/odoo/etc/odoo.conf
RUN chown odoo:odoo /opt/odoo/etc/odoo.conf
USER odoo USER odoo
...@@ -18,9 +18,7 @@ services: ...@@ -18,9 +18,7 @@ services:
SWIFT_REGIONNAME: "{{ swift_odoo_regionname }}" SWIFT_REGIONNAME: "{{ swift_odoo_regionname }}"
JOB_200_WHAT: "pg_dump --no-owner --format c --file $$SRC/$$PGDATABASE.pgdump" JOB_200_WHAT: "pg_dump --no-owner --format c --file $$SRC/$$PGDATABASE.pgdump"
JOB_300_WHAT: "backup --full-if-older-than 6D --allow-source-mismatch" JOB_300_WHAT: "backup --full-if-older-than 6D --allow-source-mismatch"
JOB_301_WHAT: "dup remove-all-inc-of-but-n-full 1 --force $$DST $$@" JOB_302_WHAT: "dup remove-all-but-n-full 5 --force $$DST $$@"
JOB_301_WHEN: "daily"
JOB_302_WHAT: "dup remove-all-but-n-full 4 --force $$DST $$@"
JOB_302_WHEN: "daily" JOB_302_WHEN: "daily"
volumes: volumes:
- odoo_filestore:/mnt/backup/src/odoo:z - odoo_filestore:/mnt/backup/src/odoo:z
......
...@@ -23,9 +23,6 @@ if os.path.isfile(REPO_FILE): ...@@ -23,9 +23,6 @@ if os.path.isfile(REPO_FILE):
call(["git", "clone", "-b", repos[repo]["branch"], "--depth", "1", repos[repo]["url"], call(["git", "clone", "-b", repos[repo]["branch"], "--depth", "1", repos[repo]["url"],
DEFAULT_PRIVATE_REPO+"/"+repo]) DEFAULT_PRIVATE_REPO+"/"+repo])
for root, dirs, files in os.walk(DEFAULT_PRIVATE_REPO):
for target in dirs + files:
os.chown(os.path.join(root, target), UID, GID)
{% if odoo_version == 10.0 %} {% if odoo_version == 10.0 %}
if os.path.isdir("/opt/odoo/private_addons/lf_theme"): if os.path.isdir("/opt/odoo/private_addons/lf_theme"):
if not os.path.isfile("/opt/odoo/private_addons/lf_theme/static\ if not os.path.isfile("/opt/odoo/private_addons/lf_theme/static\
......
...@@ -32,7 +32,4 @@ if os.path.isfile(REPO_ADDON_FILE): ...@@ -32,7 +32,4 @@ if os.path.isfile(REPO_ADDON_FILE):
shutil.move("/tmp/addon"+repo+"/"+module, shutil.move("/tmp/addon"+repo+"/"+module,
DEFAULT_PRIVATE_REPO+"/"+module) DEFAULT_PRIVATE_REPO+"/"+module)
for root, dirs, files in os.walk(DEFAULT_PRIVATE_REPO):
for target in dirs + files:
os.chown(os.path.join(root, target), UID, GID)
shutil.rmtree("/tmp/addon") shutil.rmtree("/tmp/addon")
...@@ -111,23 +111,25 @@ services: ...@@ -111,23 +111,25 @@ services:
container_name: odoo_smtp container_name: odoo_smtp
restart: unless-stopped restart: unless-stopped
{% endif %} {% endif %}
{% if sso_url is defined %} {% if odoo_prod.extra_urls is defined %}
{% for url in odoo_prod.extra_urls %}
sso: {{ url }}:
image: tecnativa/whitelist image: tecnativa/whitelist
container_name: odoo_sso container_name: odoo_{{ url }}
labels: labels:
co.elastic.logs/enabled: "false" co.elastic.logs/enabled: "false"
networks: networks:
whitelists_proxy: whitelists_proxy:
aliases: aliases:
- "{{ sso_url }}" - "{{ url }}"
whitelists_public: whitelists_public:
environment: environment:
PORT: "443" PORT: "443"
TARGET: "{{ sso_url }}" TARGET: "{{ url }}"
PRE_RESOLVE: 1 PRE_RESOLVE: 1
restart: unless-stopped restart: unless-stopped
{% endfor %}
{% endif %} {% endif %}
networks: networks:
...@@ -139,10 +141,11 @@ networks: ...@@ -139,10 +141,11 @@ networks:
external: true external: true
whitelists_proxy: whitelists_proxy:
external: true external: true
{% if sso_url is defined %} {% if odoo_prod.extra_urls is defined %}
whitelists_public: whitelists_public:
external: true external: true
{% endif %} {% endif %}
{% endif %}
{% if mailname is defined %} {% if mailname is defined %}
email_proxy: email_proxy:
driver_opts: driver_opts:
......
...@@ -73,23 +73,25 @@ services: ...@@ -73,23 +73,25 @@ services:
traefik.http.routers.{{ item.dir }}smtp.rule: "Host(`{{ item.url }}`) && PathPrefix(`/smtp/`)" traefik.http.routers.{{ item.dir }}smtp.rule: "Host(`{{ item.url }}`) && PathPrefix(`/smtp/`)"
traefik.http.routers.{{ item.dir }}smtp.service: "{{ item.dir }}smtp" traefik.http.routers.{{ item.dir }}smtp.service: "{{ item.dir }}smtp"
traefik.http.services.{{ item.dir }}smtp.loadbalancer.server.port: "8025" traefik.http.services.{{ item.dir }}smtp.loadbalancer.server.port: "8025"
{% if sso_url is defined %} {% if item.extra_urls is defined %}
{% for url in item.extra_urls %}
sso: {{ url }}:
image: tecnativa/whitelist image: tecnativa/whitelist
container_name: {{ item.dir }}_sso container_name: {{ item.dir }}_{{ url }}
labels: labels:
co.elastic.logs/enabled: "false" co.elastic.logs/enabled: "false"
networks: networks:
whitelists_proxy: whitelists_proxy:
aliases: aliases:
- "{{ sso_url }}" - "{{ url }}"
whitelists_public: whitelists_public:
environment: environment:
PORT: "443" PORT: "443"
TARGET: "{{ sso_url }}" TARGET: "{{ url }}"
PRE_RESOLVE: 1 PRE_RESOLVE: 1
restart: unless-stopped restart: unless-stopped
{% endfor %}
{% endif %} {% endif %}
networks: networks:
......
...@@ -136,6 +136,7 @@ services: ...@@ -136,6 +136,7 @@ services:
- "sources.le-filament.com" - "sources.le-filament.com"
public: public:
environment: environment:
PORT: "443 22"
TARGET: "sources.le-filament.com" TARGET: "sources.le-filament.com"
PRE_RESOLVE: 1 PRE_RESOLVE: 1
labels: labels:
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter