Files
4server/app/sbin/start/odoo
T
2026-09-27 10:39:39 -03:00

93 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# Unified Odoo start script for all versions (17 / 18 / 19).
# Called by startContainer with IMAGE_TAG exported, e.g.:
# IMAGE_TAG=odoo_19 /4server/sbin/start/odoo
#
# Requires (exported by startContainer before this is called):
# CONTAINER_ID, IMAGE_TAG, SOFTWARE, DB_NAME
_self="$(realpath "${BASH_SOURCE[0]:-$0}")"; SBIN_ROOT="$(dirname "$(dirname "$_self")")" # parent of start/
source "$SBIN_ROOT/helpers"
source "$SBIN_ROOT/odoo.lib"
load_container_config "$CONTAINER_ID"
get_contract_info
BRANCH="${BRANCH:-release}"
DB_NAME="${DB_NAME:-$CONTAINER_ID}"
ODOO_DB_USER="$DB_NAME"
log "Starting Odoo container: CONTAINER_ID=$CONTAINER_ID IMAGE_TAG=$IMAGE_TAG DB_NAME=$DB_NAME"
BASEURL="/4server/data/$CONTAINER_ID"
DATA_DIR="$BASEURL/odoo"
CUSTOM_DIR="$BASEURL/git/$CONTAINER_ID/custom"
ENTERPRISE_DIR="$BASEURL/git/$CONTAINER_ID/enterprise"
LOGS_DIR="$BASEURL/logs"
CONFIG_DIR="$BASEURL/config"
CC_DIR="$BASEURL/cc"
BACKUP_DIR="/BACKUP/$CONTAINER_ID"
GIT_DIR="$BASEURL/git-server"
INSTALL_DIR="$BASEURL/install"
SSH_DIR="$BASEURL/.ssh"
ETC_DIR="$BASEURL/etc"
PORT=$((CONTAINERDBID + 2200))
log "SSH port: $PORT"
# --- prepare directories ---
find "$BASEURL" -type d -exec chmod 777 {} \;
mkdir -p "$ETC_DIR" "$BACKUP_DIR" "$GIT_DIR/keys" "$INSTALL_DIR" "$SSH_DIR"
chmod 777 "$ETC_DIR" "$BACKUP_DIR" "$GIT_DIR"
touch "$GIT_DIR/keys/id_rsa.pub"
echo "git clone \"ssh://git@${CONTAINER_ID}.odoo4projects.com:${PORT}/git-server/repos/odoo.git\"" > "$ETC_DIR/gitpath"
# --- build Traefik domain rule (exports DOMAIN_LABEL) ---
build_traefik_rule
# --- stop and remove any existing container ---
docker stop "$CONTAINER_ID" 2>/dev/null || true
docker rm "$CONTAINER_ID" 2>/dev/null || true
# --- run ---
docker run -d --name "$CONTAINER_ID" \
--network 4server_4projects \
--restart=always \
-v "$DATA_DIR/odoo-web-data:/home/odoo/.local/share/Odoo" \
-v "$CUSTOM_DIR:/mnt/addons/custom" \
-v "$ENTERPRISE_DIR:/mnt/addons/enterprise" \
-v "$LOGS_DIR:/mnt/logs" \
-v "$CC_DIR:/mnt/cc" \
-v "$BACKUP_DIR:/mnt/backup" \
-v "$GIT_DIR:/git-server" \
-v "$INSTALL_DIR:/mnt/install" \
-v "$SSH_DIR:/etc/sshkey" \
-v "$ETC_DIR:/mnt/etc" \
-p "$PORT:22" \
-e HOST="beedb" \
-e USER="$ODOO_DB_USER" \
-e PASSWORD="$ODOO_DB_PASSWORD" \
-e CONTAINER_ID="$CONTAINER_ID" \
-e DB_NAME="$DB_NAME" \
-e HDD="$HDD" \
-e DOMAINS_SLOTS="$DOMAINS_SLOTS" \
-e BACKUP_SLOTS="$BACKUP_SLOTS" \
-e WORKER="$WORKER" \
-e GIT="$GIT" \
--label "$DOMAIN_LABEL" \
--label "traefik.http.services.$CONTAINER_ID.loadbalancer.server.port=8069" \
--label "traefik.http.routers.$CONTAINER_ID.entrypoints=web,websecure" \
--label "traefik.http.routers.$CONTAINER_ID.tls=true" \
--label "traefik.http.routers.$CONTAINER_ID.tls.certresolver=production" \
--label "traefik.http.routers.$CONTAINER_ID.service=$CONTAINER_ID" \
"docker.odoo4projects.com/4projects/${IMAGE_TAG}:${BRANCH}" \
|| die "docker run failed for $CONTAINER_ID"
# --- fix ownership inside container ---
docker exec "$CONTAINER_ID" chown -R odoo:odoo /home/odoo/.local
docker exec "$CONTAINER_ID" chown -R odoo:odoo /mnt
docker exec "$CONTAINER_ID" chown -R git:git /git-server
chmod 777 "$CC_DIR"
# --- ensure DB/user exist, restore from default.zip if brand new ---
check_and_create_db