93 lines
3.3 KiB
Bash
Executable File
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
|