#!/usr/bin/env bash # Copyright © 2024 OpenIM. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # OpenIM Docker Deployment Script # # This script automates the process of building the OpenIM server image # and deploying it using Docker Compose. # # Variables: # - SERVER_IMAGE_VERSION: Version of the server image (default: test) # - IMAGE_REGISTRY: Docker image registry (default: openim) # - DOCKER_COMPOSE_FILE_URL: URL to the docker-compose.yml file # # Usage: # SERVER_IMAGE_VERSION=latest IMAGE_REGISTRY=myregistry ./this_script.sh set -o errexit set -o nounset set -o pipefail OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. source "${OPENIM_ROOT}/scripts/lib/init.sh" trap 'openim::util::onCtrlC' INT chmod +x "${OPENIM_ROOT}"/scripts/*.sh openim::util::ensure_docker_daemon_connectivity # Default values for variables : ${SERVER_IMAGE_VERSION:=test} : ${IMAGE_REGISTRY:=openim} : ${DOCKER_COMPOSE_FILE_URL:="https://raw.githubusercontent.com/openimsdk/openim-docker/main/docker-compose.yaml"} DOCKER_COMPOSE_COMMAND= # Check if docker-compose command is available openim::util::check_docker_and_compose_versions if command -v docker compose &> /dev/null; then openim::log::info "docker compose command is available" DOCKER_COMPOSE_COMMAND="docker compose" else DOCKER_COMPOSE_COMMAND="docker-compose" fi export SERVER_IMAGE_VERSION export IMAGE_REGISTRY "${OPENIM_ROOT}"/scripts/init-config.sh pushd "${OPENIM_ROOT}" docker build -t "${IMAGE_REGISTRY}/openim-server:${SERVER_IMAGE_VERSION}" . ${DOCKER_COMPOSE_COMMAND} stop curl "${DOCKER_COMPOSE_FILE_URL}" -o docker-compose.yml ${DOCKER_COMPOSE_COMMAND} up -d # Function to check container status check_containers() { if ! ${DOCKER_COMPOSE_COMMAND} ps | grep -q 'Up'; then echo "Error: One or more docker containers failed to start." ${DOCKER_COMPOSE_COMMAND} logs return 1 fi return 0 } # Wait for a short period to allow containers to initialize sleep 30 check_containers ${DOCKER_COMPOSE_COMMAND} logs openim-server ${DOCKER_COMPOSE_COMMAND} ps popd