|
@@ -385,16 +385,6 @@ docker_cleanup() {
|
|
|
[ -f ./.dockerignore.bak ] && mv ./.dockerignore.bak ./.dockerignore >/dev/null || true
|
|
[ -f ./.dockerignore.bak ] && mv ./.dockerignore.bak ./.dockerignore >/dev/null || true
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function is_ecr_and_enterprise() {
|
|
|
|
|
- local registry="$1"
|
|
|
|
|
- local profile="$2"
|
|
|
|
|
- if [[ "$registry" == public.ecr.aws* ]] && [[ "$profile" == *enterprise* ]]; then
|
|
|
|
|
- return 0
|
|
|
|
|
- else
|
|
|
|
|
- return 1
|
|
|
|
|
- fi
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
## Build the default docker image based on debian 11.
|
|
## Build the default docker image based on debian 11.
|
|
|
make_docker() {
|
|
make_docker() {
|
|
|
local EMQX_BUILDER_VERSION="${EMQX_BUILDER_VERSION:-5.3-2}"
|
|
local EMQX_BUILDER_VERSION="${EMQX_BUILDER_VERSION:-5.3-2}"
|
|
@@ -404,7 +394,7 @@ make_docker() {
|
|
|
local EMQX_BUILDER=${EMQX_BUILDER:-ghcr.io/emqx/emqx-builder/${EMQX_BUILDER_VERSION}:${EMQX_BUILDER_ELIXIR}-${EMQX_BUILDER_OTP}-${EMQX_BUILDER_PLATFORM}}
|
|
local EMQX_BUILDER=${EMQX_BUILDER:-ghcr.io/emqx/emqx-builder/${EMQX_BUILDER_VERSION}:${EMQX_BUILDER_ELIXIR}-${EMQX_BUILDER_OTP}-${EMQX_BUILDER_PLATFORM}}
|
|
|
local EMQX_RUNNER="${EMQX_RUNNER:-${EMQX_DEFAULT_RUNNER}}"
|
|
local EMQX_RUNNER="${EMQX_RUNNER:-${EMQX_DEFAULT_RUNNER}}"
|
|
|
local EMQX_DOCKERFILE="${EMQX_DOCKERFILE:-deploy/docker/Dockerfile}"
|
|
local EMQX_DOCKERFILE="${EMQX_DOCKERFILE:-deploy/docker/Dockerfile}"
|
|
|
- local PKG_VSN="${PKG_VSN:-$(./pkg-vsn.sh)}"
|
|
|
|
|
|
|
+ local EMQX_SOURCE_TYPE="${EMQX_SOURCE_TYPE:-src}"
|
|
|
# shellcheck disable=SC2155
|
|
# shellcheck disable=SC2155
|
|
|
local VSN_MAJOR="$(scripts/semver.sh "$PKG_VSN" --major)"
|
|
local VSN_MAJOR="$(scripts/semver.sh "$PKG_VSN" --major)"
|
|
|
# shellcheck disable=SC2155
|
|
# shellcheck disable=SC2155
|
|
@@ -416,8 +406,14 @@ make_docker() {
|
|
|
SUFFIX="-elixir"
|
|
SUFFIX="-elixir"
|
|
|
fi
|
|
fi
|
|
|
local DOCKER_REGISTRY="${DOCKER_REGISTRY:-docker.io}"
|
|
local DOCKER_REGISTRY="${DOCKER_REGISTRY:-docker.io}"
|
|
|
|
|
+ local DOCKER_REGISTRIES=( )
|
|
|
|
|
+ IFS=',' read -ra DOCKER_REGISTRY_ARR <<< "$DOCKER_REGISTRY"
|
|
|
|
|
+ for r in "${DOCKER_REGISTRY_ARR[@]}"; do
|
|
|
|
|
+ # append to DOCKER_REGISTRIES
|
|
|
|
|
+ DOCKER_REGISTRIES+=("$r")
|
|
|
|
|
+ done
|
|
|
local DOCKER_ORG="${DOCKER_ORG:-emqx}"
|
|
local DOCKER_ORG="${DOCKER_ORG:-emqx}"
|
|
|
- local EMQX_BASE_DOCKER_TAG="${DOCKER_REGISTRY}/${DOCKER_ORG}/${PROFILE%%-elixir}"
|
|
|
|
|
|
|
+ local EMQX_BASE_DOCKER_TAG="${DOCKER_ORG}/${PROFILE%%-elixir}"
|
|
|
local default_tag="${EMQX_BASE_DOCKER_TAG}:${PKG_VSN}${SUFFIX}"
|
|
local default_tag="${EMQX_BASE_DOCKER_TAG}:${PKG_VSN}${SUFFIX}"
|
|
|
local EMQX_IMAGE_TAG="${EMQX_IMAGE_TAG:-$default_tag}"
|
|
local EMQX_IMAGE_TAG="${EMQX_IMAGE_TAG:-$default_tag}"
|
|
|
local EDITION=Opensource
|
|
local EDITION=Opensource
|
|
@@ -442,11 +438,14 @@ make_docker() {
|
|
|
local DOCKER_BUILDX_ARGS=(
|
|
local DOCKER_BUILDX_ARGS=(
|
|
|
--build-arg BUILD_FROM="${EMQX_BUILDER}" \
|
|
--build-arg BUILD_FROM="${EMQX_BUILDER}" \
|
|
|
--build-arg RUN_FROM="${EMQX_RUNNER}" \
|
|
--build-arg RUN_FROM="${EMQX_RUNNER}" \
|
|
|
- --build-arg EMQX_NAME="${PROFILE}" \
|
|
|
|
|
|
|
+ --build-arg SOURCE_TYPE="${EMQX_SOURCE_TYPE}" \
|
|
|
|
|
+ --build-arg PROFILE="${PROFILE%%-elixir}" \
|
|
|
|
|
+ --build-arg IS_ELIXIR="$([[ "$PROFILE" = *-elixir ]] && echo yes || echo no)" \
|
|
|
|
|
+ --build-arg SUFFIX="${SUFFIX}" \
|
|
|
--build-arg EXTRA_DEPS="${EXTRA_DEPS}" \
|
|
--build-arg EXTRA_DEPS="${EXTRA_DEPS}" \
|
|
|
--build-arg PKG_VSN="${PKG_VSN}" \
|
|
--build-arg PKG_VSN="${PKG_VSN}" \
|
|
|
--file "${EMQX_DOCKERFILE}" \
|
|
--file "${EMQX_DOCKERFILE}" \
|
|
|
- --label org.opencontainers.image.title="${PROFILE}" \
|
|
|
|
|
|
|
+ --label org.opencontainers.image.title="${PROFILE%%-elixir}" \
|
|
|
--label org.opencontainers.image.edition="${EDITION}" \
|
|
--label org.opencontainers.image.edition="${EDITION}" \
|
|
|
--label org.opencontainers.image.version="${PKG_VSN}" \
|
|
--label org.opencontainers.image.version="${PKG_VSN}" \
|
|
|
--label org.opencontainers.image.revision="${GIT_REVISION}" \
|
|
--label org.opencontainers.image.revision="${GIT_REVISION}" \
|
|
@@ -457,15 +456,12 @@ make_docker() {
|
|
|
--label org.opencontainers.image.documentation="${DOCUMENTATION_URL}" \
|
|
--label org.opencontainers.image.documentation="${DOCUMENTATION_URL}" \
|
|
|
--label org.opencontainers.image.licenses="${LICENSE}" \
|
|
--label org.opencontainers.image.licenses="${LICENSE}" \
|
|
|
--label org.opencontainers.image.otp.version="${EMQX_BUILDER_OTP}" \
|
|
--label org.opencontainers.image.otp.version="${EMQX_BUILDER_OTP}" \
|
|
|
- --tag "${EMQX_IMAGE_TAG}" \
|
|
|
|
|
--pull
|
|
--pull
|
|
|
)
|
|
)
|
|
|
:> ./.emqx_docker_image_tags
|
|
:> ./.emqx_docker_image_tags
|
|
|
for r in "${DOCKER_REGISTRIES[@]}"; do
|
|
for r in "${DOCKER_REGISTRIES[@]}"; do
|
|
|
- if ! is_ecr_and_enterprise "$r" "$PROFILE"; then
|
|
|
|
|
- DOCKER_BUILDX_ARGS+=(--tag "$r/${EMQX_IMAGE_TAG}")
|
|
|
|
|
- echo "$r/${EMQX_IMAGE_TAG}" >> ./.emqx_docker_image_tags
|
|
|
|
|
- fi
|
|
|
|
|
|
|
+ DOCKER_BUILDX_ARGS+=(--tag "$r/${EMQX_IMAGE_TAG}")
|
|
|
|
|
+ echo "$r/${EMQX_IMAGE_TAG}" >> ./.emqx_docker_image_tags
|
|
|
done
|
|
done
|
|
|
if [ "${DOCKER_BUILD_NOCACHE:-false}" = true ]; then
|
|
if [ "${DOCKER_BUILD_NOCACHE:-false}" = true ]; then
|
|
|
DOCKER_BUILDX_ARGS+=(--no-cache)
|
|
DOCKER_BUILDX_ARGS+=(--no-cache)
|
|
@@ -475,14 +471,12 @@ make_docker() {
|
|
|
fi
|
|
fi
|
|
|
if [ "${DOCKER_LATEST:-false}" = true ]; then
|
|
if [ "${DOCKER_LATEST:-false}" = true ]; then
|
|
|
for r in "${DOCKER_REGISTRIES[@]}"; do
|
|
for r in "${DOCKER_REGISTRIES[@]}"; do
|
|
|
- if ! is_ecr_and_enterprise "$r" "$PROFILE"; then
|
|
|
|
|
- DOCKER_BUILDX_ARGS+=(--tag "$r/${EMQX_BASE_DOCKER_TAG}:latest${SUFFIX}")
|
|
|
|
|
- echo "$r/${EMQX_BASE_DOCKER_TAG}:latest${SUFFIX}" >> ./.emqx_docker_image_tags
|
|
|
|
|
- DOCKER_BUILDX_ARGS+=(--tag "$r/${EMQX_BASE_DOCKER_TAG}:${VSN_MAJOR}.${VSN_MINOR}${SUFFIX}")
|
|
|
|
|
- echo "$r/${EMQX_BASE_DOCKER_TAG}:${VSN_MAJOR}.${VSN_MINOR}${SUFFIX}" >> ./.emqx_docker_image_tags
|
|
|
|
|
- DOCKER_BUILDX_ARGS+=(--tag "$r/${EMQX_BASE_DOCKER_TAG}:${VSN_MAJOR}.${VSN_MINOR}.${VSN_PATCH}${SUFFIX}")
|
|
|
|
|
- echo "$r/${EMQX_BASE_DOCKER_TAG}:${VSN_MAJOR}.${VSN_MINOR}.${VSN_PATCH}${SUFFIX}" >> ./.emqx_docker_image_tags
|
|
|
|
|
- fi
|
|
|
|
|
|
|
+ DOCKER_BUILDX_ARGS+=(--tag "$r/${EMQX_BASE_DOCKER_TAG}:latest${SUFFIX}")
|
|
|
|
|
+ echo "$r/${EMQX_BASE_DOCKER_TAG}:latest${SUFFIX}" >> ./.emqx_docker_image_tags
|
|
|
|
|
+ DOCKER_BUILDX_ARGS+=(--tag "$r/${EMQX_BASE_DOCKER_TAG}:${VSN_MAJOR}.${VSN_MINOR}${SUFFIX}")
|
|
|
|
|
+ echo "$r/${EMQX_BASE_DOCKER_TAG}:${VSN_MAJOR}.${VSN_MINOR}${SUFFIX}" >> ./.emqx_docker_image_tags
|
|
|
|
|
+ DOCKER_BUILDX_ARGS+=(--tag "$r/${EMQX_BASE_DOCKER_TAG}:${VSN_MAJOR}.${VSN_MINOR}.${VSN_PATCH}${SUFFIX}")
|
|
|
|
|
+ echo "$r/${EMQX_BASE_DOCKER_TAG}:${VSN_MAJOR}.${VSN_MINOR}.${VSN_PATCH}${SUFFIX}" >> ./.emqx_docker_image_tags
|
|
|
done
|
|
done
|
|
|
fi
|
|
fi
|
|
|
if [ "${DOCKER_PLATFORMS:-default}" != 'default' ]; then
|
|
if [ "${DOCKER_PLATFORMS:-default}" != 'default' ]; then
|
|
@@ -491,6 +485,9 @@ make_docker() {
|
|
|
if [ "${DOCKER_PUSH:-false}" = true ]; then
|
|
if [ "${DOCKER_PUSH:-false}" = true ]; then
|
|
|
DOCKER_BUILDX_ARGS+=(--push)
|
|
DOCKER_BUILDX_ARGS+=(--push)
|
|
|
fi
|
|
fi
|
|
|
|
|
+ if [ "${DOCKER_LOAD:-false}" = true ]; then
|
|
|
|
|
+ DOCKER_BUILDX_ARGS+=(--load)
|
|
|
|
|
+ fi
|
|
|
if [ -d "${REBAR_GIT_CACHE_DIR:-}" ]; then
|
|
if [ -d "${REBAR_GIT_CACHE_DIR:-}" ]; then
|
|
|
cache_tar="$(pwd)/rebar-git-cache.tar"
|
|
cache_tar="$(pwd)/rebar-git-cache.tar"
|
|
|
if [ ! -f "${cache_tar}" ]; then
|
|
if [ ! -f "${cache_tar}" ]; then
|
|
@@ -516,9 +513,8 @@ make_docker() {
|
|
|
echo 'lux_logs/'
|
|
echo 'lux_logs/'
|
|
|
echo '_upgrade_base/'
|
|
echo '_upgrade_base/'
|
|
|
} >> ./.dockerignore
|
|
} >> ./.dockerignore
|
|
|
- echo "Docker build args: ${DOCKER_BUILDX_ARGS[*]}"
|
|
|
|
|
|
|
+ echo "Docker buildx args: ${DOCKER_BUILDX_ARGS[*]}"
|
|
|
docker buildx build "${DOCKER_BUILDX_ARGS[@]}" .
|
|
docker buildx build "${DOCKER_BUILDX_ARGS[@]}" .
|
|
|
- echo "${EMQX_IMAGE_TAG}" > ./.docker_image_tag
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function join {
|
|
function join {
|