diff --git a/.env.example b/.env.example index 698aaee..3182073 100644 --- a/.env.example +++ b/.env.example @@ -2,7 +2,7 @@ # Main Configuration # #--------------------------# # Odoo -APP_ENV=local +APP_ENV=staging INIT= UPDATE= LOAD=base,web,session_redis,attachment_s3 @@ -26,7 +26,7 @@ LOAD_LANGUAGE= DB_SSLMODE=prefer DB_MAXCONN=64 DB_TEMPLATE=unaccent_template -UNACCENT=True +UNACCENT=False LIST_DB=True DBFILTER=.* @@ -70,16 +70,13 @@ REDIS_EXPIRATION=604800 REDIS_EXPIRATION_ANONYMOUS=10800 # Filesystem -MINIO_VIRTUAL_HOST=s3.j8c.test -MINIO_CONSOLE_PORT=9000 -MINIO_VIRTUAL_PORT=9001 -DISABLE_S3_STORAGE=0 - +S3_VIRTUAL_HOST=s3.odoocker.test +S3_API_PORT=9000 AWS_ACCESS_KEY_ID=myaccesskey AWS_SECRET_ACCESS_KEY=mysecretkey +AWS_BUCKETNAME=odoocker +AWS_HOST=http://s3:${S3_API_PORT} AWS_REGION= -AWS_HOST=http://s3:${MINIO_CONSOLE_PORT} -AWS_BUCKETNAME=${DB_NAME} # PgAdmin PGADMIN_DOMAIN=pgadmin.odoocker.test @@ -104,6 +101,8 @@ SUPPORT_EMAIL=mail@example.com # Containers' Tags ODOO_TAG=16.0 POSTGRES_TAG=16.0 +REDIS_TAG=latest +S3_TAG=latest NGINX_TAG=1.25.2 NGINX_PROXY_TAG=1.3.1 ACME_COMPANION_TAG=2.2.8 @@ -132,7 +131,7 @@ LOG_PATH=/var/log/odoo/odoo.log DEBUG_PATH=/usr/bin/odoo # Server startup config -ODOO_RC=/etc/odoo/odoo.conf +ODOO_RC=${ROOT_PATH}/odoo.conf SAVE=False INIT=${INIT} UPDATE=${UPDATE} @@ -168,6 +167,7 @@ SCREENSHOTS=/tmp/odoo_tests # Logging LOG_LEVEL=${LOG_LEVEL} LOG_HANDLER=odoo.http.rpc.request:${LOG_HANDLER_LEVEL},odoo.http.rpc.response:${LOG_HANDLER_LEVEL},:${LOG_HANDLER_LEVEL},odoo.sql_db:${LOG_HANDLER_LEVEL} +LOG_DB=False LOG_DB_LEVEL=${LOG_LEVEL} SYSLOG=False LOGFILE= @@ -286,11 +286,13 @@ AWS_REGION=${AWS_REGION} AWS_HOST=${AWS_HOST} AWS_BUCKETNAME=${AWS_BUCKETNAME} -DISABLE_ATTACHMENT_STORAGE=${DISABLE_S3_STORAGE} +DISABLE_ATTACHMENT_STORAGE=0 MINIO_ROOT_USER=${AWS_ACCESS_KEY_ID} MINIO_ROOT_PASSWORD=${AWS_SECRET_ACCESS_KEY} -MINIO_VIRTUAL_HOST=${MINIO_VIRTUAL_HOST} -MINIO_BROWSER_REDIRECT_URL=${MINIO_VIRTUAL_HOST} +MINIO_VIRTUAL_HOST=${S3_VIRTUAL_HOST} +MINIO_BROWSER_REDIRECT_URL=http://${MINIO_VIRTUAL_HOST} +MINIO_API_PORT=${S3_API_PORT} +MINIO_VIRTUAL_PORT=9001 #-------------# # PgAdmin # diff --git a/docker-compose.yml b/docker-compose.yml index ac50d12..a951336 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -52,11 +52,16 @@ services: - PGADMING_DB_NAME - PGADMING_DB_USER - PGADMIN_DB_PASSWORD + - AWS_HOST + - AWS_REGION + - AWS_ACCESS_KEY_ID + - AWS_SECRET_ACCESS_KEY + - AWS_BUCKETNAME networks: - internal redis: - image: eqalpha/keydb:latest + image: eqalpha/keydb:${REDIS_TAG} platform: linux/amd64 ports: - 6379:6379 @@ -67,16 +72,16 @@ services: - redis-data:/var/lib/keydb s3: - image: minio/minio:latest + image: minio/minio:${S3_TAG} environment: - MINIO_ROOT_USER - MINIO_ROOT_PASSWORD - VIRTUAL_HOST=${MINIO_VIRTUAL_HOST} - - VIRTUAL_PORT=${MINIO_VIRTUAL_PORT} + - VIRTUAL_PORT=9001 - MINIO_BROWSER_REDIRECT_URL command: server /data --console-address ":9001" volumes: - - s3_data:/data + - s3-data:/data ports: - 9000:9000 - 9001:9001 @@ -125,7 +130,7 @@ volumes: odoo-data: pg-data: redis-data: - s3_data: + s3-data: certs: vhost: html: diff --git a/odoo/Dockerfile b/odoo/Dockerfile index ff8f697..7f465b4 100644 --- a/odoo/Dockerfile +++ b/odoo/Dockerfile @@ -77,7 +77,7 @@ RUN mkdir -p ${THIRD_PARTY_ADDONS} && chown odoo:odoo -R ${THIRD_PARTY_ADDONS} COPY --chown=odoo:odoo ./odoo/fix-manifest.py / COPY --chown=odoo:odoo ./odoo/third-party-addons.sh / -RUN /third-party-addons.sh && chown odoo:odoo ${THIRD_PARTY_ADDONS} +RUN /third-party-addons.sh && chown odoo:odoo -R ${THIRD_PARTY_ADDONS} #---------------------# # Logging # diff --git a/odoo/fix-manifest.py b/odoo/fix-manifest.py index 5075e79..5879cd8 100644 --- a/odoo/fix-manifest.py +++ b/odoo/fix-manifest.py @@ -16,7 +16,7 @@ manifest_dict = eval(''.join(lines[start_index:end_index + 1])) # Modify the manifest dictionary manifest_dict['installable'] = True -manifest_dict['auto_install'] = True +manifest_dict['auto_install'] = False # Construct the modified manifest string modified_manifest_lines = ['{\n'] diff --git a/odoo/odoo.conf b/odoo/odoo.conf new file mode 100644 index 0000000..6346b75 --- /dev/null +++ b/odoo/odoo.conf @@ -0,0 +1,308 @@ +[options] +;------------------------------------------; +; Options not exposed on the command line. ; +;------------------------------------------; + +admin_passwd = ${ADMIN_PASSWD} +csv_internal_sep = ${CSV_INTERNAL_SEP} +publisher_warranty_url = ${PUBLISHER_WARRANTY_URL} +root_path = ${ROOT_PATH} +reportgz = ${REPORTGZ} +websocket_keep_alive_timeout = ${WEBSOCKET_KEEP_ALIVE_TIMEOUT} +websocket_rate_limit_burst = ${WEBSOCKET_RATE_LIMIT_BURST} +websocket_rate_limit_delay = ${WEBSOCKET_RATE_LIMIT_DELAY} + +;-----------------------; +; Server startup config ; +;-----------------------; +; --config | -c +config = ${ODOO_RC} + +; --save +save = ${SAVE} + +; --init | -i +init = ${INIT} + +; --update | -u +update = ${UPDATE} + +; --without-demo +demo = ${DEMO} +without_demo = ${WITHOUT_DEMO} + +; --import-partial +import_partial = ${IMPORT_PARTIAL} + +; --pidfile +pidfile = ${PIDFILE} + +; --addons-path +addons_path = ${ADDONS_PATH} + +; --upgrade-path +upgrade_path = ${UPGRADE_PATH} + +; --load +server_wide_modules = ${SERVER_WIDE_MODULES} + +; --data-dir +data_dir = ${DATA_DIR} + +;------; +; HTTP ; +;------; +; --http-interface | --xmlrpc-interface +http_interface = ${HTTP_INTERFACE} + +; --http-port | -p | --xmlrpc-port +http_port = ${HTTP_PORT} + +; --xmlrpcs-interface +xmlrpcs_interface = ${XMLRPCS_INTERFACE} + +; --xmlrpcs-port +xmlrpcs_port = ${XMLRPCS_PORT} + +; --gevent-port | --longpolling_port (deprecated) +gevent_port = ${GEVENT_PORT} + +; --no-http | --no-xmlrpc +http_enable = ${HTTP_ENABLE} + +; --no-xmlrpcs +xmlrpcs = ${XMLRPCS} + +; --proxy-mode +proxy_mode = ${PROXY_MODE} + +; --x-sendfile +x_sendfile = ${X_SENDFILE} + +;---------------; +; Testing Group ; +;---------------; +; --test-file +test_file = ${TEST_FILE} + +; --test-enable +test_enable = ${TEST_ENABLE} + +; --test-tags +test_tags = ${TEST_FILE} + +; --screencasts +screencasts = ${SCREENCASTS} + +; --screenshots +screenshots = ${SCREENSHOTS} + +;---------------; +; Logging Group ; +;---------------; +; --logfile +logfile = ${LOGFILE} + +; --syslog +syslog = ${SYSLOG} + +; --log-handler | --log-web (--log-handler=odoo.http:DEBUG) | --log-sql (--log-handler=odoo.sql_db:DEBUG) +log_handler = ${LOG_HANDLER} + +; --log-db +log_db = ${LOG_DB} + +; --log-db-level +log_db_level = ${LOG_DB_LEVEL} + +; --log-level +log_level = ${LOG_LEVEL} + +;------------; +; SMTP Group ; +;------------; +; --email-from +email_from = ${EMAIL_FROM} + +; --from-filter +from_filter = ${FROM_FILTER} + +; --smtp +smtp_server = ${SMTP_SERVER} + +; --smtp-port +smtp_port = ${SMTP_PORT} + +; --smtp-ssl +smtp_ssl = ${SMTP_SSL} + +; --smtp-user +smtp_user = ${SMTP_USER} + +; --smtp-password +smtp_password = ${SMTP_PASSWORD} + +; --smtp-ssl-certificate-filename +smtp_ssl_certificate_filename = ${SMTP_SSL_CERTIFICATE_FILENAME} + +; --smtp-ssl-private-key-filename +smtp_ssl_private_key_filename = ${SMTP_SSL_PRIVATE_KEY_FILENAME} + +;----------; +; DB Group ; +;----------; +; --database | -d +db_name = ${DB_NAME} + +; --db_user | -r +db_user = ${DB_USER} + +; --db_password | -w +db_password = ${DB_PASSWORD} + +; --pg_path +pg_path = ${PG_PATH} + +; --db_host +db_host = ${DB_HOST} + +; --db_port +db_port = ${DB_PORT} + +; --db_sslmode +db_sslmode = ${DB_SSLMODE} + +; --db_maxconn +db_maxconn = ${DB_MAXCONN} + +; --db-template +db_template = ${DB_TEMPLATE} + +;------------------------------; +; Internationalisation options ; +;------------------------------; +; --load-language +load_language = ${LOAD_LANGUAGE} + +; --language +language = ${LANGUAGE} + +; --i18n-export +translate_out = ${TRANSLATE_OUT} + +; --i18n-import +translate_in = ${TRANSLATE_IN} + +; --i18n-overwrite +overwrite_existing_translations = ${OVERWRITE_EXISTING_TRANSLATIONS} + +; --modules +translate_modules = ${TRANSLATE_MODULES} + +;----------; +; Security ; +;----------; +; --no-database-list +list_db = ${LIST_DB} + +;-----; +; WEB ; +;-----; +; --db-filter +dbfilter = ${DBFILTER} + +;------------------; +; Advanced options ; +;------------------; +; --dev (all, reload, xml, qweb, werkzeug, sql, shell, assets, tests) +dev_mode = ${DEV_MODE} + +; --shell-interface +shell_interface = ${SHELL_INTERFACE} + +; --stop-after-init +stop_after_init = ${STOP_AFTER_INIT} + +; --osv-memory-count-limit +osv_memory_count_limit = ${OSV_MEMORY_COUNT_LIMIT} + +; --transient-age-limit | --osv-memory-age-limit (deprecated) +transient_age_limit = ${TRANSIENT_AGE_LIMIT} + +; --max-cron-threads +max_cron_threads = ${MAX_CRON_THREADS} + +; --unaccent +unaccent = ${UNACCENT} + +; --geoip-db +geoip_database = ${GEOIP_DATABASE} + +; --workers +workers = ${WORKERS} + +; --limit-memory-soft +limit_memory_soft = ${LIMIT_MEMORY_SOFT} + +; --limit-memory-hard +limit_memory_hard = ${LIMIT_MEMORY_HARD} + +; --limit-time-cpu +limit_time_cpu = ${LIMIT_TIME_CPU} + +; --limit-time-real +limit_time_real = ${LIMIT_TIME_REAL} + +; --limit-time-real-cron +limit_time_real_cron = ${LIMIT_TIME_REAL_CRON} + +; --limit-request +limit_request = ${LIMIT_REQUEST} + +;-----------------------------; +; External Integrations ; +;-----------------------------; + +;-------------; +; Redis ; +;-------------; +; -- Possible values: 1 or true +ODOO_SESSION_REDIS = ${ODOO_SESSION_REDIS} + +; -- Defaults to is localhost +ODOO_SESSION_REDIS_HOST = ${ODOO_SESSION_REDIS_HOST} + +; -- Defaults to 6379 +ODOO_SESSION_REDIS_PORT = ${ODOO_SESSION_REDIS_PORT} + +; -- Sets the password for the AUTH command (optional) +ODOO_SESSION_REDIS_PASSWORD = ${ODOO_SESSION_REDIS_PASSWORD} + +; -- Alternative way to define the Redis server address like rediss:// protocol. +ODOO_SESSION_REDIS_URL = ${ODOO_SESSION_REDIS_URL} + +; -- Prefix for the session keys (optional) +ODOO_SESSION_REDIS_PREFIX = ${ODOO_SESSION_REDIS_PREFIX} + +; -- Time in seconds before expiration of the sessions (default is 7 days) +ODOO_SESSION_REDIS_EXPIRATION = ${ODOO_SESSION_REDIS_EXPIRATION} + +; -- Time in seconds before expiration of the anonymous sessions (default is 3 hours) +ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS = ${ODOO_SESSION_REDIS_EXPIRATION_ANONYMOUS} + +;----------; +; S3 ; +;----------; +; Disable S3 storage +DISABLE_ATTACHMENT_STORAGE = ${DISABLE_ATTACHMENT_STORAGE} + +; Not required if using AWS S3 +AWS_HOST = ${AWS_HOST} + +; Required if using AWS services +AWS_REGION = ${AWS_REGION} +AWS_ACCESS_KEY_ID = ${AWS_ACCESS_KEY_ID} +AWS_SECRET_ACCESS_KEY = ${AWS_SECRET_ACCESS_KEY} + +; Optional ${db_name} placeholder +AWS_BUCKETNAME = ${AWS_BUCKETNAME}