integrate keydb to odoocker

This commit is contained in:
Yhael S
2023-09-27 22:47:22 -05:00
parent dddafd862f
commit fc0d0c9875
18 changed files with 415 additions and 97 deletions

View File

@@ -4,11 +4,11 @@
# Odoo
APP_ENV=local
INIT=
UPDATE=
UPDATE=custom_core
LOAD=base,web,session_redis
WORKERS=2
DEV_MODE=reload,qweb
DOMAIN=erp.odoocker.test
DEV_MODE=reload,xml
DOMAIN=erp.j8c.test
# Enterprise
GITHUB_USER=
@@ -18,7 +18,7 @@ GITHUB_ACCESS_TOKEN=
ADMIN_PASSWD=odoo
DB_HOST=postgres
DB_PORT=5432
DB_NAME=odoo
DB_NAME=j8c
DB_USER=odoo
DB_PASSWORD=odoo
LOAD_LANGUAGE=
@@ -31,12 +31,12 @@ LIST_DB=True
DBFILTER=.*
# Logging
LOG_LEVEL=debug
LOG_LEVEL=info
# Additional logs
LOG_HANDLER_LEVEL=INFO
# Nginx
CORS_ALLOWED_DOMAIN="'http://external-domain.test'"
CORS_ALLOWED_DOMAIN="'https://odoo.j8c.com.mx'"
# Testing
TEST_ENABLE=False
@@ -52,20 +52,46 @@ SMTP_PASSWORD=
EMAIL_FROM=
FROM_FILTER=
# Redis
SESSION_REDIS=true
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
# REDIS_URL=
REDIS_PREFIX=odoo
REDIS_EXPIRATION=604800
REDIS_EXPIRATION_ANONYMOUS=10800
# Postgres
POSTGRES_MAIN_HOST=${DB_HOST}
POSTGRES_MAIN_PORT=${DB_PORT}
POSTGRES_MAIN_DB=postgres
POSTGRES_MAIN_USER=postgres
POSTGRES_MAIN_PASSWORD=${DB_PASSWORD}
# PgAdmin
PGADMIN_DOMAIN=pgadmin.odoocker.test
PGADMIN_DOMAIN=pgadmin.j8c.test
PGADMING_DB_NAME=pgadmin
PGADMING_DB_USER=pgadmin
PGADMIN_DB_PASSWORD=${DB_PASSWORD}
PGADMIN_DB_HOST="'postgresql://${PGADMING_DB_USER}:${PGADMIN_DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${PGADMING_DB_NAME}'"
PGADMIN_EMAIL=contacto@juarezsoft.com.mx
PGADMIN_PASSWORD=odoo
PGADMIN_SERVERS_JSON=
PGADMIN_CONFIG_SERVER_MODE=True
#------------------------------#
# Project Configurations #
#------------------------------#
# Docker
PROJECT_NAME=odoocker
SUPPORT_EMAIL=mail@example.com
PROJECT_NAME=j8c
SUPPORT_EMAIL=contacto@juarezsoft.com.mx
# Containers' Tags
ODOO_TAG=16.0
POSTGRES_TAG=15.4
ODOO_TAG=15.0
POSTGRES_TAG=16.0
NGINX_TAG=1.25.2
NGINX_PROXY_TAG=1.3.1
ACME_COMPANION_TAG=2.2.8
@@ -87,6 +113,7 @@ WEBSOCKET_RATE_LIMIT_DELAY=0.2
# Custom paths
COMMUNITY_ADDONS=${ROOT_PATH}/addons
ENTERPRISE_ADDONS=${ROOT_PATH}/enterprise
THIRD_PARTY_ADDONS=${ROOT_PATH}/third-party-addons
EXTRA_ADDONS=${ROOT_PATH}/extra-addons
CUSTOM_ADDONS=${ROOT_PATH}/custom-addons
LOG_PATH=/var/log/odoo/odoo.log
@@ -101,7 +128,7 @@ DEMO=False
WITHOUT_DEMO=all
IMPORT_PARTIAL=False
PIDFILE=
ADDONS_PATH=${COMMUNITY_ADDONS},${ENTERPRISE_ADDONS},${EXTRA_ADDONS},${CUSTOM_ADDONS}
ADDONS_PATH=${COMMUNITY_ADDONS},${ENTERPRISE_ADDONS},${THIRD_PARTY_ADDONS},${EXTRA_ADDONS},${CUSTOM_ADDONS}
UPGRADE_PATH=
SERVER_WIDE_MODULES=${LOAD}
DATA_DIR=/var/lib/odoo
@@ -113,7 +140,7 @@ DEBUG_INTERFACE=${HTTP_INTERFACE}
HTTP_PORT=8069
DEBUG_PORT=8070
XMLRPCS_PORT=8071
GEVENT_PORT=8072
LONGPOLLING_PORT=8072
HTTP_ENABLE=True
XMLRPCS=True
PROXY_MODE=True
@@ -172,7 +199,7 @@ SHELL_INTERFACE=ptpython
STOP_AFTER_INIT=False
OSV_MEMORY_COUNT_LIMIT=False
TRANSIENT_AGE_LIMIT=1.0
MAX_CRON_THREADS=2
MAX_CRON_THREADS=1
UNACCENT=${UNACCENT}
GEOIP_DATABASE=/usr/share/GeoIP/GeoLite2-City.mmdb
WORKERS=${WORKERS}
@@ -193,11 +220,11 @@ TEMP_DOCKER_SOCK=/tmp/docker.sock
#----------------#
# Postgres #
#----------------#
POSTGRES_HOST=${DB_HOST}
POSTGRES_PORT=${DB_PORT}
POSTGRES_DB=postgres
POSTGRES_USER=${DB_USER}
POSTGRES_PASSWORD=${DB_PASSWORD}
POSTGRES_HOST=${POSTGRES_MAIN_HOST}
POSTGRES_PORT=${POSTGRES_MAIN_PORT}
POSTGRES_DB=${POSTGRES_MAIN_DB}
POSTGRES_USER=${POSTGRES_MAIN_USER}
POSTGRES_PASSWORD=${POSTGRES_MAIN_PASSWORD}
PGDATA=/var/lib/postgresql/data/${PROJECT_NAME}
#-------------#
@@ -210,16 +237,6 @@ LETSENCRYPT_HOST=${DOMAIN}
LETSENCRYPT_EMAIL=${SUPPORT_EMAIL}
CORS_ALLOWED_DOMAIN=${CORS_ALLOWED_DOMAIN}
#-------------#
# PgAdmin #
#-------------#
PGADMIN_DATA=/var/lib/pgadmin
PGADMIN_VIRTUAL_HOST=${PGADMIN_DOMAIN}
PGADMIN_DEFAULT_EMAIL=${SUPPORT_EMAIL}
PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD}
PGADMIN_LETSENCRYPT_HOST=${PGADMIN_DOMAIN}
LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
#-------------------#
# Nginx Proxy #
#-------------------#
@@ -236,14 +253,67 @@ CORS_ALLOWED_DOMAIN=${CORS_ALLOWED_DOMAIN}
#----------------------#
DEFAULT_EMAIL=${SUPPORT_EMAIL}
#----------------------#
# REDIS Caching #
#----------------------#
ODOO_SESSION_REDIS = ${ODOO_SESSION_REDIS}
ODOO_SESSION_REDIS_HOST = ${ODOO_SESSION_REDIS_HOST}
ODOO_SESSION_REDIS_PORT = ${ODOO_SESSION_REDIS_PORT}
ODOO_SESSION_REDIS_PASSWORD = ${ODOO_SESSION_REDIS_PASSWORD}
ODOO_SESSION_REDIS_URL = ${ODOO_SESSION_REDIS_URL}
ODOO_SESSION_REDIS_PREFIX = ${ODOO_SESSION_REDIS_PREFIX}
ODOO_SESSION_REDIS_EXPIRATION = ${ODOO_SESSION_REDIS_EXPIRATION}
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = ${ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
#-------------#
# Redis #
#-------------#
ODOO_SESSION_REDIS=${SESSION_REDIS}
ODOO_SESSION_REDIS_HOST=${REDIS_HOST}
ODOO_SESSION_REDIS_PORT=${REDIS_PORT}
ODOO_SESSION_REDIS_PASSWORD=${REDIS_PASSWORD}
# ODOO_SESSION_REDIS_URL=
ODOO_SESSION_REDIS_PREFIX=${REDIS_PREFIX}
ODOO_SESSION_REDIS_EXPIRATION=${REDIS_EXPIRATION}
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS=${REDIS_EXPIRATION_ANONYMOUS}
#-------------#
# PgAdmin #
#-------------#
# Container
PGADMIN_DATA=/var/lib/pgadmin
PGADMIN_SERVERS_JSON=${PGADMIN_SERVERS_JSON}
PGADMIN_DEFAULT_EMAIL=${PGADMIN_EMAIL}
PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD}
PGADMIN_VIRTUAL_HOST=${PGADMIN_DOMAIN}
PGADMIN_LETSENCRYPT_HOST=${PGADMIN_DOMAIN}
PGADMIN_LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
# PgAdmin Configuration
PGADMIN_CONFIG_APP_NAME="'pgAdmin 4'"
PGADMIN_CONFIG_SERVER_MODE=${PGADMIN_CONFIG_SERVER_MODE}
PGADMIN_CONFIG_CONFIG_DATABASE_CONNECTION_POOL_SIZE=5
PGADMIN_CONFIG_DEFAULT_SERVER="'127.0.0.1'"
PGADMIN_CONFIG_DEFAULT_SERVER_PORT=5050
PGADMIN_CONFIG_MAX_SESSION_IDLE_TIME=120
PGADMIN_CONFIG_CONFIG_DATABASE_URI=${PGADMIN_DB_HOST}
# Password Settings
PGADMIN_CONFIG_PASSWORD_LENGTH_MIN=6
PGADMIN_CONFIG_ALLOW_SAVE_PASSWORD=True
PGADMIN_CONFIG_ALLOW_SAVE_TUNNEL_PASSWORD=True
PGADMIN_CONFIG_MAX_LOGIN_ATTEMPTS=10
# Query History
PGADMIN_CONFIG_MAX_QUERY_HIST_STORED=20
# SMTP Server
PGADMIN_CONFIG_MAIL_SERVER="'localhost'"
PGADMIN_CONFIG_MAIL_PORT=25
PGADMIN_CONFIG_MAIL_USE_SSL=False
PGADMIN_CONFIG_MAIL_USE_TLS=False
PGADMIN_CONFIG_MAIL_USERNAME="''"
PGADMIN_CONFIG_MAIL_PASSWORD="''"
PGADMIN_CONFIG_MAIL_DEBUG=False
PGADMIN_CONFIG_SECURITY_EMAIL_SENDER="'$PGADMIN_DEFAULT_EMAIL'"
# Dynamic PgAdmin Servers
PGADMIN_DB1_NAME=Odoocker
PGADMIN_DB1_HOST=localhost
PGADMIN_DB1_PORT=5432
PGADMIN_DB1_MAINTENANCE_DB=odoocker
PGADMIN_DB1_USERNAME=odoo
PGADMIN_DB1_TUNNEL_HOST=erp.odoocker.test
PGADMIN_DB1_TUNNEL_PORT=22
PGADMIN_DB1_TUNNEL_USERNAME=ubuntu

3
.gitignore vendored
View File

@@ -1,6 +1,9 @@
# Ignores the main configuration file.
/.env
# Ignores the pgadmin private key
pgadmin/private_key
# Ignores the docker compose local or production environment.
docker-compose.override.yml

View File

@@ -1,7 +1,13 @@
services:
pgadmin:
image: dpage/pgadmin4:${PGADMIN_TAG}
restart: unless-stopped
build:
context: ./
dockerfile: ./pgadmin/Dockerfile
args:
- PGADMIN_TAG
depends_on:
- postgres
restart: 'no'
expose:
- 80
volumes:
@@ -11,7 +17,27 @@ services:
- PGADMIN_DEFAULT_PASSWORD
- VIRTUAL_HOST=${PGADMIN_VIRTUAL_HOST}
- LETSENCRYPT_HOST=${PGADMIN_LETSENCRYPT_HOST}
- LETSENCRYPT_EMAIL
- LETSENCRYPT_EMAIL=${PGADMIN_LETSENCRYPT_EMAIL}
- PGADMIN_CONFIG_APP_NAME
- PGADMIN_CONFIG_CONFIG_DATABASE_CONNECTION_POOL_SIZE
- PGADMIN_CONFIG_SERVER_MODE
- PGADMIN_CONFIG_DEFAULT_SERVER
- PGADMIN_CONFIG_DEFAULT_SERVER_PORT
- PGADMIN_CONFIG_PASSWORD_LENGTH_MIN
- PGADMIN_CONFIG_MAX_SESSION_IDLE_TIME
- PGADMIN_CONFIG_CONFIG_DATABASE_URI
- PGADMIN_CONFIG_ALLOW_SAVE_PASSWORD
- PGADMIN_CONFIG_MAX_QUERY_HIST_STORED
- PGADMIN_CONFIG_MAIL_SERVER
- PGADMIN_CONFIG_MAIL_PORT
- PGADMIN_CONFIG_MAIL_USE_SSL
- PGADMIN_CONFIG_MAIL_USE_TLS
- PGADMIN_CONFIG_MAIL_USERNAME
- PGADMIN_CONFIG_MAIL_PASSWORD
- PGADMIN_CONFIG_MAIL_DEBUG
- PGADMIN_CONFIG_SECURITY_EMAIL_SENDER
- PGADMIN_CONFIG_ALLOW_SAVE_TUNNEL_PASSWORD
- PGADMIN_CONFIG_MAX_LOGIN_ATTEMPTS
networks:
- internal

View File

@@ -10,6 +10,7 @@ services:
- GITHUB_USER
- GITHUB_ACCESS_TOKEN
- ENTERPRISE_ADDONS
- THIRD_PARTY_ADDONS
- LOG_PATH
depends_on:
- postgres
@@ -20,6 +21,7 @@ services:
- ./odoo/custom-addons:${CUSTOM_ADDONS}
- ./odoo/entrypoint.sh:/entrypoint.sh
- ./odoo/odoorc.sh:/odoorc.sh
- ./odoo/third-party-addons.sh:/third-party-addons.sh
env_file:
- ./.env
networks:
@@ -27,12 +29,11 @@ services:
postgres:
build:
context: ./postgres
dockerfile: Dockerfile
context: ./
dockerfile: ./postgres/Dockerfile
args:
- POSTGRES_TAG
restart: unless-stopped
shm_size: 1GB
tty: true
volumes:
- pg-data:${PGDATA}
@@ -42,6 +43,12 @@ services:
- POSTGRES_USER
- POSTGRES_PASSWORD
- PGDATA
- DB_USER
- DB_TEMPLATE
- UNACCENT_TEMPLATE
- PGADMING_DB_NAME
- PGADMING_DB_USER
- PGADMIN_DB_PASSWORD
networks:
- internal
@@ -83,17 +90,16 @@ services:
networks:
- internal
keydb:
redis:
image: eqalpha/keydb:latest
platform: linux/amd64
shm_size: 1GB
ports:
- 6379:6379
restart: unless-stopped
networks:
- internal
# command: keydb-server /etc/keydb/keydb.conf
volumes:
#- ./keydb.conf:/etc/keydb/keydb.conf:ro
- cache-db-data:/var/lib/keydb
- redis-data:/var/lib/keydb
volumes:
data-dir:
@@ -101,8 +107,7 @@ volumes:
certs:
vhost:
html:
cache-db-data:
redis-data:
networks:
internal:

View File

@@ -23,7 +23,7 @@ server {
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_pass http://odoo:8069;
@@ -39,19 +39,12 @@ server {
}
}
location ~* /web/static/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_pass http://odoo:8069;
}
location /websocket {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host;
proxy_pass http://odoo:8072;
}
}

View File

@@ -14,6 +14,7 @@ ARG LOG_PATH
ARG GITHUB_USER
ARG GITHUB_ACCESS_TOKEN
ARG ENTERPRISE_ADDONS
ARG THIRD_PARTY_ADDONS
ARG ODOO_RC
ENV ODOO_TAG=${ODOO_TAG} \
@@ -21,6 +22,7 @@ ENV ODOO_TAG=${ODOO_TAG} \
GITHUB_USER=${GITHUB_USER} \
GITHUB_ACCESS_TOKEN=${GITHUB_ACCESS_TOKEN} \
ENTERPRISE_ADDONS=${ENTERPRISE_ADDONS} \
THIRD_PARTY_ADDONS=${THIRD_PARTY_ADDONS} \
ODOO_RC=${ODOO_RC}
#------------------------#
@@ -55,6 +57,16 @@ RUN if [ -n "$GITHUB_USER" ] && [ -n "$GITHUB_ACCESS_TOKEN" ]; then \
git clone https://${GITHUB_USER}:${GITHUB_ACCESS_TOKEN}@github.com/odoo/enterprise.git ${ENTERPRISE_ADDONS} --depth 1 --branch ${ODOO_TAG} --single-branch --no-tags; \
fi
#-------------------------#
# Odoo Extra Addons #
#-------------------------#
RUN mkdir -p ${THIRD_PARTY_ADDONS} && \
chown odoo:odoo -R ${THIRD_PARTY_ADDONS}
COPY --chown=odoo:odoo ./odoo/third-party-addons.sh /
RUN /third-party-addons.sh && chown odoo:odoo ${THIRD_PARTY_ADDONS}
#---------------------#
# PIP Dependecies #
#---------------------#
@@ -64,7 +76,7 @@ RUN pip3 install --upgrade pip
# Copy & Install PIP requirements
COPY --chown=odoo:odoo ./odoo/requirements.txt /tmp/requirements.txt
RUN python3 -m pip install --upgrade -r /tmp/requirements.txt && \
RUN python3 -m pip install -r /tmp/requirements.txt && \
rm /tmp/requirements.txt
#---------------------#

View File

@@ -1,8 +1,8 @@
{
'name': 'Report URL',
'summary': 'Adds Report URL to Odoo Container',
'name': 'Odoocker Base',
'summary': 'Supercharge Odoo with Odoocker',
'description': '''
Odoo Containers doesn't come with report.url param out of the box, so we add it for you to work with Odoocker.
Some Odoocker dependencies require to some custom values that we cover with this Addon for you.
''',
'version': '1.0.0',
'category': 'Technical',

View File

@@ -48,6 +48,11 @@
# ... other qweb templates
],
'assets': {
'web.assets_frontend': [
'module_name/static/src/js/file.js',
'module_name/static/src/css/style.css'
# ... other assets
],
'web.assets_backend': [
'module_name/static/src/js/file.js',
'module_name/static/src/css/style.css'

View File

@@ -64,9 +64,8 @@ xmlrpcs_interface = {XMLRPCS_INTERFACE}
; --xmlrpcs-port
xmlrpcs_port = {XMLRPCS_PORT}
; --gevent-port | --longpolling_port (deprecated)
; --longpolling_port
gevent_port = {GEVENT_PORT}
longpolling_port = False
; --no-http | --no-xmlrpc
http_enable = {HTTP_ENABLE}
@@ -215,7 +214,7 @@ dbfilter = {DBFILTER}
;------------------;
; Advanced options ;
;------------------;
; --dev (all, reload, qweb, werkzeug, sql, shell, assets, tests)
; --dev
dev_mode = {DEV_MODE}
; --shell-interface
@@ -260,22 +259,29 @@ limit_time_real_cron = {LIMIT_TIME_REAL_CRON}
; --limit-request
limit_request = {LIMIT_REQUEST}
;------------------------------------------;
; Options not exposed on the command line. ;
;------------------------------------------;
; --ODOO_SESSION_REDIS
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS} ;has to be 1 or true
; --ODOO_SESSION_REDIS_HOST
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST} ;is the redis hostname (default is localhost)
; --ODOO_SESSION_REDIS_PORT
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT} ;is the redis port (default is 6379)
; --ODOO_SESSION_REDIS_PASSWORD
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD} ;is the password for the AUTH command (optional)
; -- ODOO_SESSION_REDIS_URL
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL} ;is an alternative way to define the Redis server address. It's the preferred way when you're using the rediss:// protocol.
; -- ODOO_SESSION_REDIS_PREFIX
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX} ;is the prefix for the session keys (optional)
; -- ODOO_SESSION_REDIS_EXPIRATION
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION} ;is the time in seconds before expiration of the sessions (default is 7 days)
; -- ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS} ;the time in seconds before expiration of the anonymous sessions (default is 3 hours)
;-------------;
; Redis ;
;-------------;
; has to be 1 or true
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS}
; is the redis hostname (default is localhost)
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST}
; is the redis port (default is 6379)
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT}
; is the password for the AUTH command (optional)
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD}
; is an alternative way to define the Redis server address. It's the preferred way when you're using the rediss:// protocol.
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL}
; is the prefix for the session keys (optional)
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX}
; is the time in seconds before expiration of the sessions (default is 7 days)
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION}
; the time in seconds before expiration of the anonymous sessions (default is 3 hours)
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}

View File

@@ -100,6 +100,22 @@ defaults=(
[LIMIT_TIME_REAL]=${LIMIT_TIME_REAL}
[LIMIT_TIME_REAL_CRON]=${LIMIT_TIME_REAL_CRON}
[LIMIT_REQUEST]=${LIMIT_REQUEST}
[ODOO_SESSION_REDIS]=${ODOO_SESSION_REDIS}
[ODOO_SESSION_REDIS_HOST]=${ODOO_SESSION_REDIS_HOST}
[ODOO_SESSION_REDIS_PORT]=${ODOO_SESSION_REDIS_PORT}
[ODOO_SESSION_REDIS_PASSWORD]=${ODOO_SESSION_REDIS_PASSWORD}
[ODOO_SESSION_REDIS_URL]=${ODOO_SESSION_REDIS_URL}
[ODOO_SESSION_REDIS_PREFIX]=${ODOO_SESSION_REDIS_PREFIX}
[ODOO_SESSION_REDIS_EXPIRATION]=${ODOO_SESSION_REDIS_EXPIRATION}
[ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS]=${ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
[DISABLE_ATTACHMENT_STORAGE]=${DISABLE_ATTACHMENT_STORAGE}
[AWS_HOST]=${AWS_HOST}
[AWS_REGION]=${AWS_REGION}
[AWS_ACCESS_KEY_ID]=${AWS_ACCESS_KEY_ID}
[AWS_SECRET_ACCESS_KEY]=${AWS_SECRET_ACCESS_KEY}
[AWS_BUCKETNAME]=${AWS_BUCKETNAME}
)
# Define the template
@@ -172,7 +188,6 @@ xmlrpcs_port = {XMLRPCS_PORT}
; --gevent-port | --longpolling_port (deprecated)
gevent_port = {GEVENT_PORT}
longpolling_port = False
; --no-http | --no-xmlrpc
http_enable = {HTTP_ENABLE}
@@ -365,6 +380,34 @@ limit_time_real_cron = {LIMIT_TIME_REAL_CRON}
; --limit-request
limit_request = {LIMIT_REQUEST}
;-------------;
; Redis ;
;-------------;
; has to be 1 or true
ODOO_SESSION_REDIS = {ODOO_SESSION_REDIS}
; is the redis hostname (default is localhost)
ODOO_SESSION_REDIS_HOST = {ODOO_SESSION_REDIS_HOST}
; is the redis port (default is 6379)
ODOO_SESSION_REDIS_PORT = {ODOO_SESSION_REDIS_PORT}
; is the password for the AUTH command (optional)
ODOO_SESSION_REDIS_PASSWORD = {ODOO_SESSION_REDIS_PASSWORD}
; is an alternative way to define the Redis server address. It's the preferred way when you're using the rediss:// protocol.
ODOO_SESSION_REDIS_URL = {ODOO_SESSION_REDIS_URL}
; is the prefix for the session keys (optional)
ODOO_SESSION_REDIS_PREFIX = {ODOO_SESSION_REDIS_PREFIX}
; is the time in seconds before expiration of the sessions (default is 7 days)
ODOO_SESSION_REDIS_EXPIRATION = {ODOO_SESSION_REDIS_EXPIRATION}
; the time in seconds before expiration of the anonymous sessions (default is 3 hours)
ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = {ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS}
EOF
)

2
odoo/third-party-addons.sh Executable file
View File

@@ -0,0 +1,2 @@
git clone https://github.com/camptocamp/odoo-cloud-platform.git --depth 1 --branch ${ODOO_TAG} --single-branch --no-tags;
cp -r odoo-cloud-platform/session_redis ${THIRD_PARTY_ADDONS}/session_redis

32
pgadmin/Dockerfile Normal file
View File

@@ -0,0 +1,32 @@
#------------------------#
# PGAdmin Server #
#------------------------#
ARG PGADMIN_TAG
FROM dpage/pgadmin4:${PGADMIN_TAG}
# Receive ARGs from docker-compose.yml & convert them into ENVs
ARG PGADMIN_DEFAULT_EMAIL
ENV PGADMIN_DEFAULT_EMAIL=${PGADMIN_DEFAULT_EMAIL}
# Switch to root user
USER root
# Install bash
RUN apk add --no-cache bash jq sqlite
# Conditionally copy the private key if it exists
COPY --chown=pgadmin:root ./pgadmin/private_key /pgadmin4/private_key
# Set permissions for the private key
# Copy your script file into the Docker image
COPY --chown=pgadmin:root ./.env /
COPY ./pgadmin/start_pgadmin.sh /var/lib/pgadmin/start_pgadmin.sh
# Make the script executable
RUN chmod +x /var/lib/pgadmin/start_pgadmin.sh
# Run your script
RUN /var/lib/pgadmin/start_pgadmin.sh
# Expose the necessary port
EXPOSE 80

89
pgadmin/start_pgadmin.sh Executable file
View File

@@ -0,0 +1,89 @@
#!/bin/bash
set -e
# Source environment variables
set -a
source /.env
set +a
# Check if PGADMIN_DEFAULT_EMAIL is set
if [[ -z $PGADMIN_DEFAULT_EMAIL ]]; then
echo "PGADMIN_DEFAULT_EMAIL is not set. Exiting..."
exit 1
fi
# Modify the email to replace @ with _
DIR_NAME="/var/lib/pgadmin/storage/${PGADMIN_DEFAULT_EMAIL//@/_}"
# Create the directory using the modified name
mkdir -p "$DIR_NAME"
cp /pgadmin4/private_key "$DIR_NAME/private_key"
chown -R pgadmin:root "$DIR_NAME/private_key"
# Generate JSON for each matching variable
DB_PATH="/var/lib/pgadmin/pgadmin4.db"
json_output="{\"Servers\":{"
index=1
while true; do
name_var="PGADMIN_DB${index}_NAME"
if [[ -z ${!name_var} ]]; then
break
fi
host_var="PGADMIN_DB${index}_HOST"
port_var="PGADMIN_DB${index}_PORT"
maintenance_db_var="PGADMIN_DB${index}_MAINTENANCE_DB"
username_var="PGADMIN_DB${index}_USERNAME"
tunnel_host_var="PGADMIN_DB${index}_TUNNEL_HOST"
tunnel_port_var="PGADMIN_DB${index}_TUNNEL_PORT"
tunnel_username_var="PGADMIN_DB${index}_TUNNEL_USERNAME"
json_output+="\"$index\":$(jq -n \
--arg name "${!name_var}" \
--arg host "${!host_var:-localhost}" \
--arg port "${!port_var:-5432}" \
--arg db "${!maintenance_db_var:-${!name_var}}" \
--arg username "${!username_var:-odoo}" \
--arg thost "${!tunnel_host_var}" \
--arg tport "${!tunnel_port_var:-22}" \
--arg tuser "${!tunnel_username_var:-ubuntu}" \
'{
"Name": $name,
"Group": "Servers",
"Host": $host,
"Port": $port|tonumber,
"MaintenanceDB": $db,
"Username": $username,
"UseSSHTunnel": 1,
"TunnelHost": $thost,
"TunnelPort": $tport,
"TunnelUsername": $tuser,
"TunnelAuthentication": 1,
"KerberosAuthentication": false,
"ConnectionParameters": {
"sslmode": "prefer",
"connect_timeout": 10,
"sslcert": "'"$DIR_NAME"'/.postgresql/postgresql.crt",
"sslkey": "'"$DIR_NAME"'/.postgresql/postgresql.key"
},
"Shared": true
}'),"
index=$((index + 1))
done
# Remove trailing comma and close JSON braces
json_output=${json_output%,}
json_output+="}}"
# Save the well-formatted JSON to a file using jq
if [[ $PGADMIN_SERVERS_JSON ]]; then
echo $json_output | jq '.' > "$PGADMIN_SERVERS_JSON"
# Make the Servers.json file readable for all users
chmod 755 "/pgadmin4/servers.json"
echo "JSON configuration saved to $DIR_NAME/servers.json"
fi

View File

@@ -8,8 +8,11 @@ FROM postgres:${POSTGRES_TAG}
RUN apt-get update && apt-get install -y \
# Unaccent extension dependencies
postgresql-contrib \
apt-utils \
# Clean up the apt cache to reduce the image size
&& rm -rf /var/lib/apt/lists/*
COPY --chown=postgres:postgres ./.env /
# Copy the script to create the unaccent template
COPY ./entrypoint.sh /docker-entrypoint-initdb.d/entrypoint.sh
COPY ./postgres/entrypoint.sh /docker-entrypoint-initdb.d/entrypoint.sh

View File

@@ -1,3 +1,32 @@
psql -p 5432 -U odoo -d postgres -c "CREATE DATABASE unaccent_template WITH TEMPLATE = template0"
psql -p 5432 -U odoo -d postgres -c "\\c unaccent_template"
psql -p 5432 -U odoo -d postgres -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
#!/bin/bash
set -e
# Source environment variables
set -a
source /.env
set +a
# Create the $DB_TEMPLATE database
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE DATABASE $DB_TEMPLATE WITH TEMPLATE = template0;"
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "\\c $DB_TEMPLATE;"
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
# Create Odoo user and give proper privileges
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';"
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "ALTER USER $DB_USER CREATEDB;"
# Give Odoo user access to copy $DB_TEMPLATE
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "GRANT ALL PRIVILEGES ON DATABASE $DB_TEMPLATE TO $DB_USER;"
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $DB_TEMPLATE -c "ALTER DATABASE $DB_TEMPLATE OWNER TO $DB_USER;"
# Create PgAdmin user and give proper privileges
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE DATABASE $PGADMING_DB_NAME;"
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "CREATE USER $PGADMING_DB_USER WITH PASSWORD '$PGADMIN_DB_PASSWORD';"
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "GRANT ALL PRIVILEGES ON DATABASE $PGADMING_DB_NAME TO $PGADMING_DB_USER;"
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $PGADMING_DB_NAME -c "GRANT ALL PRIVILEGES ON SCHEMA public TO $PGADMING_DB_USER;"
# Revoke Odoo user's access to pgadmin database
psql -p $POSTGRES_PORT -U $POSTGRES_MAIN_USER -d $POSTGRES_DB -c "REVOKE CONNECT ON DATABASE $PGADMING_DB_NAME FROM $DB_USER;"
echo "Setup completed."