feat: Docker image with clone functionality
This commit is contained in:
58 files changed
+142
-70
No files matched your search
+1
-1
Submodule addons/account_invoicing updated: 1037b3de3a...c972bf096b.
+1
-1
Submodule addons/account_reconcile updated: 8626df3c46...5c104795d9.
Submodule addons/certificate_planer updated: b05787d258...54a006f21c.
+1
-1
Submodule addons/connector updated: c21c9d4b8f...c645e1514f.
+1
-1
Submodule addons/management-system updated: fbab7ef22e...b0d19a4c16.
+1
-1
Submodule addons/product_attribute updated: 83d965f64e...dbbb6b52d2.
+1
-1
Submodule addons/purchase_workflow updated: 7d736036a8...e6c4668b4b.
+1
-1
Submodule addons/sale_workflow updated: c40903a94f...0b00736320.
+1
-1
Submodule addons/social updated: 49bd50d908...ea985e4cb9.
Submodule addons/stock_logistics_workflow updated: cf3efa63c0...a9ee003877.
+1
-1
Submodule addons/vertical_saas updated: 814e50853c...02ce0caaee.
@@ -41,6 +41,8 @@ RUN apt-get update \
|
||||
python3-xlrd \
|
||||
python3-xlwt \
|
||||
xz-utils \
|
||||
git \
|
||||
openssh-client \
|
||||
gettext \
|
||||
python3-dev \
|
||||
libpq-dev \
|
||||
@@ -98,8 +100,8 @@ COPY ./build/odoo.conf.template /etc/odoo/
|
||||
COPY ./build/entrypoint.sh /
|
||||
|
||||
# Create a user named odoo
|
||||
ARG UID=101
|
||||
ARG GID=101
|
||||
ARG UID=102
|
||||
ARG GID=102
|
||||
RUN groupadd --gid $GID odoo
|
||||
RUN useradd --uid $UID --gid $GID -m odoo
|
||||
|
||||
|
||||
+29
-9
@@ -2,17 +2,16 @@
|
||||
|
||||
A better Odoo image.
|
||||
|
||||
- Substitutes environment vars in `odoo.conf.template`
|
||||
- Detects and aggregates nested module folders
|
||||
- The Odoo source is set to the latest commit of date in tag
|
||||
- Ships with python 3.11
|
||||
- Define Odoo configs with env vars
|
||||
- Odoo source is based on exact git revision
|
||||
- Setup `odoo.conf` with environment vars
|
||||
- Clones addons from git repos
|
||||
- Detects and aggregates nested module folders
|
||||
- Stores session information in database
|
||||
- Set and get environment name from server config
|
||||
|
||||
## Usage
|
||||
|
||||
Use `ODOO_ADDONS_PATH` to pass paths with nested module folders.
|
||||
|
||||
```yml
|
||||
version: "3"
|
||||
services:
|
||||
@@ -26,11 +25,20 @@ services:
|
||||
USER: odoo
|
||||
PASSWORD: odoo
|
||||
PORT: 5432
|
||||
ENVIRONMENT: production
|
||||
GIT_SSH_PRIVATE_KEY: |
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
QyNTUxOQAAACCuoR1PvK081rwrC5hlSXM7Q24cPQOpSlymLefnPiihxQAAAJjEbzDGxG8w
|
||||
AAAEDx6kjL/1dmz7WZctryva7EphDT1rHyyfjxFiEPVnmrXq6hHU+8rTzWvCsLmGVJcztD
|
||||
bhw9A6lKXKYt5+c+KKHFAAAAEmJvdEBtaW50LXN5c3RlbS5jaAECAw==
|
||||
-----END OPENSSH PRIVATE KEY-----
|
||||
ADDONS_GIT_REPOS: "git@github.com:Mint-System/Odoo-Apps-Server-Tools.git#17.0,git@github.com:OCA/server-tools.git#17.0"
|
||||
ODOO_ADDONS_PATH: /mnt/addons/,/mnt/oca/,/mnt/enterprise,/mnt/themes/
|
||||
SERVER_WIDE_MODULES: web,session_db
|
||||
SESSION_DB_URI: postgres://odoo:odoo@db/16.0
|
||||
LOG_LEVEL: debug
|
||||
ADMIN_PASSWD: oqua9AiHeibac2pie9ei
|
||||
DBFILTER: ^%d$
|
||||
ENVIRONMENT: production
|
||||
LIST_DB: False
|
||||
PROXY_MODE: True
|
||||
WORKERS: 4
|
||||
@@ -42,6 +50,18 @@ services:
|
||||
- ./oca:/mnt/oca
|
||||
- ./enterprise:/mnt/enterprise
|
||||
- ./themes:/mnt/themes
|
||||
db:
|
||||
container_name: db
|
||||
image: postgres:14-alpine
|
||||
environment:
|
||||
POSTGRES_USER: odoo
|
||||
POSTGRES_PASSWORD: odoo
|
||||
PGDATA: /var/lib/postgresql/data/pgdata
|
||||
volumes:
|
||||
- db-data:/var/lib/postgresql/data/pgdata
|
||||
volumes:
|
||||
odoo-data:
|
||||
db-data:
|
||||
```
|
||||
|
||||
## Develop
|
||||
@@ -51,7 +71,7 @@ services:
|
||||
Extend the image with additional python packages:
|
||||
|
||||
```dockerfile
|
||||
FROM mintsystem/odoo:16.0.2024.0405
|
||||
FROM mintsystem/odoo:17.0.20240730
|
||||
|
||||
USER root
|
||||
|
||||
@@ -65,7 +85,7 @@ USER odoo
|
||||
Copy a custom Odoo conf file to the image:
|
||||
|
||||
```dockerfile
|
||||
FROM mintsystem/odoo:16.0.2024.0405
|
||||
FROM mintsystem/odoo:17.0.20240730
|
||||
|
||||
USER root
|
||||
|
||||
|
||||
+50
-5
@@ -22,6 +22,47 @@ entrypoint_log() {
|
||||
fi
|
||||
}
|
||||
|
||||
git_clone_addons() {
|
||||
if [ -n "$ADDONS_GIT_REPOS" ]; then
|
||||
|
||||
# Setup git ssh key
|
||||
mkdir -p ~/.ssh
|
||||
echo "$GIT_SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519
|
||||
chmod 600 ~/.ssh/id_ed25519
|
||||
eval "$(ssh-agent -s)" >> /dev/null
|
||||
ssh-add ~/.ssh/id_ed25519
|
||||
|
||||
# Clone git repo addons into /var/lib/odoo/addons
|
||||
for ADDON_GIT_REPO in $(echo "$ADDONS_GIT_REPOS" | tr "," "\n"); do
|
||||
|
||||
# Parse git ssh url
|
||||
GIT_HOSTNAME=$(echo "$ADDON_GIT_REPO" | cut -d "@" -f 2 | cut -d ":" -f 1)
|
||||
GIT_URL=$(echo "$ADDON_GIT_REPO" | cut -d "#" -f 1)
|
||||
GIT_BRANCH=$(echo "$ADDON_GIT_REPO" | cut -d "#" -f 2)
|
||||
GIT_PATH=$(echo "$ADDON_GIT_REPO" | cut -d "#" -f 1 | cut -d ":" -f 2 | cut -d "." -f 1)
|
||||
ADDON_PATH="/var/lib/odoo/addons/$GIT_PATH"
|
||||
|
||||
# Clone git repo and submodules
|
||||
if [ ! -d "$ADDON_PATH" ]; then
|
||||
ssh-keyscan -t rsa,dsa "$GIT_HOSTNAME" > ~/.ssh/known_hosts 2>/dev/null
|
||||
entrypoint_log "$ME: Clone $GIT_URL branch $GIT_BRANCH"
|
||||
git clone "$GIT_URL" --depth 1 --single-branch --branch "$GIT_BRANCH" "$ADDON_PATH"
|
||||
cd "$ADDON_PATH"
|
||||
git submodule update --init --recursive && git submodule update --init --recursive
|
||||
fi
|
||||
|
||||
# Add git repo to addons path
|
||||
if [ -n "$ODOO_ADDONS_PATH" ]; then
|
||||
ODOO_ADDONS_PATH="$ODOO_ADDONS_PATH,$ADDON_PATH"
|
||||
else
|
||||
ODOO_ADDONS_PATH="$ADDON_PATH"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
git_clone_addons
|
||||
|
||||
set_odoo_config_env() {
|
||||
if [ -n "$ODOO_ADDONS_PATH" ]; then
|
||||
|
||||
@@ -29,14 +70,15 @@ set_odoo_config_env() {
|
||||
|
||||
# Search for module manifest files containing "version.+NN.0" and return list of module paths
|
||||
ODOO_MODULE_PATH=$(echo "$ODOO_ADDONS_PATH" | tr "," "\n" | xargs -I {} find {} -type f -name "__manifest__.py" | xargs grep -l "version.*${ODOO_VERSION}" | xargs -r dirname | sort -u | tr "\n" ",")
|
||||
|
||||
# Set parent folder of module paths as new addons path
|
||||
ODOO_ADDONS_PATH=$(echo "$ODOO_MODULE_PATH" | tr "," "\n" | xargs -I {} dirname {} | sort -u | tr "\n" "," | sed 's/,$//')
|
||||
|
||||
export ODOO_ADDONS_PATH
|
||||
# Set parent folder of module paths as new addons path
|
||||
ODOO_MODULE_PATH=$(echo "$ODOO_MODULE_PATH" | tr "," "\n" | xargs -I {} dirname {} | sort -u | tr "\n" "," | sed 's/,$//')
|
||||
|
||||
if [ -n "$ODOO_MODULE_PATH" ]; then
|
||||
ODOO_ADDONS_PATH="$ODOO_ADDONS_PATH,$ODOO_MODULE_PATH"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
: "${LOG_LEVEL:=info}"
|
||||
export LOG_LEVEL
|
||||
|
||||
@@ -57,6 +99,9 @@ set_odoo_config_env() {
|
||||
|
||||
: "${WORKERS:=0}"
|
||||
export WORKERS
|
||||
|
||||
: "${SERVER_WIDE_MODULES:=web}"
|
||||
export SERVER_WIDE_MODULES
|
||||
}
|
||||
|
||||
set_odoo_config_env
|
||||
|
||||
@@ -8,6 +8,7 @@ environment = $ENVIRONMENT
|
||||
list_db = $LIST_DB
|
||||
proxy_mode = $PROXY_MODE
|
||||
workers = $WORKERS
|
||||
server_wide_modules = $SERVER_WIDE_MODULES
|
||||
; csv_internal_sep = ,
|
||||
; db_maxconn = 64
|
||||
; db_name = False
|
||||
|
||||
+5
-1
@@ -11,7 +11,11 @@ services:
|
||||
USER: odoo
|
||||
PASSWORD: odoo
|
||||
PORT: ${POSTGRES_PORT}
|
||||
GIT_SSH_PRIVATE_KEY: ${GIT_SSH_PRIVATE_KEY}
|
||||
ADDONS_GIT_REPOS: ${ADDONS_GIT_REPOS}
|
||||
ODOO_ADDONS_PATH: ${ODOO_ADDONS_PATH}
|
||||
SERVER_WIDE_MODULES: ${SERVER_WIDE_MODULES}
|
||||
SESSION_DB_URI: ${SESSION_DB_URI}
|
||||
LOG_LEVEL: ${LOG_LEVEL}
|
||||
ADMIN_PASSWD: ${ADMIN_PASSWD}
|
||||
DBFILTER: ${DBFILTER}
|
||||
@@ -43,7 +47,7 @@ services:
|
||||
- ./config/servers.json:/pgadmin4/servers.json
|
||||
db:
|
||||
container_name: db
|
||||
image: postgres:12-alpine
|
||||
image: postgres:14-alpine
|
||||
ports:
|
||||
- "127.0.0.1:${POSTGRES_PORT}:${POSTGRES_PORT}"
|
||||
environment:
|
||||
|
||||
+1
-1
Submodule enterprise updated: 19729fa5be...a66071e9d2.
Submodule oca/account-financial-reporting updated: a21ebb6242...ac9f16d085.
Submodule oca/account-financial-tools updated: 86927340e1...6553ce4ddb.
+1
-1
Submodule oca/account-invoicing updated: 13182f27d6...82e7d5cbf1.
+1
-1
Submodule oca/account-reconcile updated: 2af5bf1ca0...6e195ce878.
+1
-1
Submodule oca/bank-payment updated: 2f446b3dce...0e1ca760a6.
Submodule oca/bank-statement-import updated: f50c272fde...16f9266b9d.
+1
-1
Submodule oca/brand updated: 82336864b0...1d68684a93.
+1
-1
Submodule oca/business-requirement updated: 2d17cfaa8b...c1a28f1e08.
+1
-1
Submodule oca/community-data-files updated: e15a82179a...5164a971bf.
+1
-1
Submodule oca/contract updated: 7d2a2db2ec...4aff2af5d4.
+1
-1
Submodule oca/credit-control updated: e44582a995...e6fdde1686.
+1
-1
Submodule oca/dms updated: a272546315...6dd4f2fb7d.
+1
-1
Submodule oca/e-commerce updated: f0d58b3068...f56e87712a.
+1
-1
Submodule oca/edi updated: 40f164c843...d4f8e4d48a.
+1
-1
Submodule oca/helpdesk updated: a04b9a0be8...b451d0105f.
+1
-1
Submodule oca/hr updated: 6097c995c2...1a5dfa0369.
+1
-1
Submodule oca/hr-attendance updated: c5a82e071a...4bd6d75560.
+1
-1
Submodule oca/hr-holidays updated: 1254419bda...757cdefbf8.
+1
-1
Submodule oca/iot updated: 430793659a...6452f06ec4.
+1
-1
Submodule oca/knowledge updated: b1ef710177...da81ac1948.
+1
-1
Submodule oca/maintenance updated: dc484ef834...0c56bb4dd2.
+1
-1
Submodule oca/management-system updated: 748766e39b...d8f4653d65.
+1
-1
Submodule oca/manufacture updated: 144f56e01e...1f34d36b10.
+1
-1
Submodule oca/product-attribute updated: 9b1b912c76...a77f86e528.
+1
-1
Submodule oca/purchase-workflow updated: d9f6ff2dbc...811f6b4198.
+1
-1
Submodule oca/queue updated: c93a25366d...f91aced8d0.
+1
-1
Submodule oca/reporting-engine updated: 14e00f5356...fece3e3a51.
+1
-1
Submodule oca/rest-framework updated: 2380e306e8...378860621d.
+1
-1
Submodule oca/sale-reporting updated: 9c336f43dd...5a3a28a70f.
+1
-1
Submodule oca/sale-workflow updated: 01ad918095...a90ad00ee8.
+1
-1
Submodule oca/server-auth updated: d146760eba...d4fee8b8d0.
+1
-1
Submodule oca/server-backend updated: 3befd34719...778242d9a9.
+1
-1
Submodule oca/server-tools updated: 8c2c1572a6...a787ad2345.
+1
-1
Submodule oca/server-ux updated: a8c3da7ffe...ae9520b2a0.
+1
-1
Submodule oca/social updated: 165ab965ec...47ec998e0a.
Submodule oca/stock-logistics-warehouse updated: 341c1cb644...d311024a87.
+1
-1
Submodule oca/timesheet updated: fff331b56d...e25ccfb60a.
+1
-1
Submodule oca/web updated: 949fc07164...a73351bc57.
+1
-1
Submodule oca/web-api updated: 8bf71b63a0...1dd2c7f221.
+1
-1
Submodule oca/website updated: 9369732298...5a188cc853.
+1
-1
Submodule odoo updated: 6281aa9233...d2714fa73e.
Reference in new issue
Block a user