diff --git a/.jenkins/.ignore b/.jenkins/.ignore new file mode 100644 index 0000000000000000000000000000000000000000..953da1eb8a08bb963c9a34d391bc65c1eb146704 --- /dev/null +++ b/.jenkins/.ignore @@ -0,0 +1,7 @@ +.git +.github +.jenkins +README.md +README.en.md +openeuler +kubernetes diff --git a/.jenkins/.ownbuild b/.jenkins/.ownbuild new file mode 100644 index 0000000000000000000000000000000000000000..03e0ea92ebf6e6b7f9b50e8a4b6c7ed5d84643b6 --- /dev/null +++ b/.jenkins/.ownbuild @@ -0,0 +1 @@ +kolla | kolla/build.sh diff --git a/.jenkins/docker_images_build.sh b/.jenkins/docker_images_build.sh new file mode 100644 index 0000000000000000000000000000000000000000..ff302ed375ca0cf466b9d0eca85ed2c1e1bbdbd3 --- /dev/null +++ b/.jenkins/docker_images_build.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +######################################################################################### +# This script is used by jenkins to build the docker images after new Dockerfile merged +# Maintainer: heguofeng +######################################################################################### + +set -e + +WORKDIR=$(pwd) +IGNORE_DOCKER_LIST="./.jenkins/.ignore" +OWN_BUILD_LIST="./.jenkins/.ownbuild" +APP_NAME_LIST="" +REPOSITORY="openeuler" + +## check whether the app name exist in given file +is_app_exist() +{ + local file_name=$1 + local app_name=$2 + local is_exist=$(cat ${WORKDIR}/${file_name} | grep -w ${app_name}) + if [ "$is_exist"x == ""x ]; then + echo "no" + else + echo "yes" + fi +} + +## generate the app name list that need to build, ie not ignored by dockerignore file +generate_app_name_list() +{ + for app_name in $(ls -l ${WORKDIR} | grep -v grep | grep ^d | awk '{print $9}') + do + local ret_value=$(is_app_exist ${IGNORE_DOCKER_LIST} ${app_name}) + if [ "${ret_value}" == "no" ]; then + APP_NAME_LIST="${APP_NAME_LIST} ${app_name}" + echo "append ${app_name} to APP_NAME_LIST" + else + echo "${app_name} is configured to be ignored" + fi + done + + APP_NAME_LIST=${APP_NAME_LIST} + echo "docker app names: ${APP_NAME_LIST}" +} + +docker_login() +{ + docker login -u $DOCKER_USER -p $DOCKER_PASSWORD +} + +build_app_os() +{ + local app_name=$1 + local app_version=$2 + + for os_version in $(ls -l ${WORKDIR}/${app_name}/${app_version} | grep -v grep | grep ^d | awk '{print $9}') + do + ##TODO: consider deduplicate the build of the same docker image + echo "start to build docker image for ${app_name}-${app_version} on openEuler-${os_version}" + cd ${WORKDIR}/${app_name}/${app_version}/${os_version} && \ + docker buildx build -t "${REPOSITORY}/${app_name}:${app_version}-${os_version}" --platform linux/amd64,linux/arm64 . --push + done +} + +build_app() +{ + local app_name=$1 + for app_version in $(ls -l ${WORKDIR}/${app_name} | grep -v README | grep -v grep | grep ^d | awk '{print $9}') + do + build_app_os ${app_name} ${app_version} + done +} + +docker_build_push() +{ + for app_name in ${APP_NAME_LIST} + do + echo "start to build docker image for ${app_name}" + local ret_val=$(is_app_exist ${OWN_BUILD_LIST} ${app_name}) + if [ "${ret_val}" == "yes" ]; then + ##TODO some docker images use thire own build.sh to build + echo "call ${app_name}'s build.sh to build and push docker images" + else + build_app ${app_name} + fi + echo "end to build docker image for ${app_name}" + done +} + +## Main +echo "work directory: ${WORKDIR}" +generate_app_name_list +docker_login +docker_build_push + diff --git a/README.en.md b/README.en.md index 83530eba61816ef1a89b315b37c4a6d40a642c99..8e43ad0cf47f2460e4c6a0ea4c2fa22672e55f56 100644 --- a/README.en.md +++ b/README.en.md @@ -38,12 +38,15 @@ such as, the nginx 1.20.1 based on openEuler 20.03 LTS SP1 is under `nginx/1.20. - The container images would be published after Dockerfile merged under `openeuler`, such as: `openeuler/nginx:1.20.1-20.03-lts-sp1`. -Every openEuler application images contains the README (such as nginx/Readme.md), included: +Every openEuler application images contains the README (such as nginx/README.md), included: - Desciption for container images build. - openEuler, container service (like Docker, iSula) and application version info. -The container images would be published after Dockerfile merged under `openeuler`. +The container images would be published under `openeuler` after Dockerfile merged. We use `docker buildx` to build the container image for amd64 and arm64 platforms. +The build steps are as follows: +- go into directory of `[Application name]/[Application version]/[openEuler version]` +- execute the command `docker buildx build -t tag_name --platform linux/amd64,linux/arm64 .` #### Avalible Container Repo diff --git a/README.md b/README.md index 0eeaf7a57cd714ef58bfa0158d80d1df8a747faa..c914fbd0dab10cb2fa03a464b7b23b429f83d684 100644 --- a/README.md +++ b/README.md @@ -30,18 +30,21 @@ openEuler的基础镜像由社区官方发布,目前发布在[openEuler镜像 #### openEuler应用镜像 -基于openEuler基础镜像,将一些热门应用进行发布,生成基于openEuler应用镜像。 +基于openEuler基础镜像,将一些热门应用进行发布,生成基于openEuler的应用镜像。 - 存放路径规则:`[应用名]/[应用版本号]/[openEuler版本号]/Dockerfile`, 例如:基于openEuler 20.03-lts-sp1的nginx 1.20.1的Dockerfile位于`nginx/1.20.1/20.03-lts-sp1/Dockerfile`。 - Tags命名:合入后,将会发布至openeuler仓库, 例如:`openeuler/nginx:1.20.1-20.03-lts-sp1`。 -每个应用镜像,应当包含一个README(例如nginx/Readme.md),涵盖以下信息: +每个应用镜像,应当包含一个README(例如nginx/README.md),涵盖以下信息: - 构建容器镜像的说明。 - 配套的openEuler、容器(例如Docker, iSula)及应用的版本信息。 +应用镜像的Dockerfile合入后,会触发jenkins上的CI流水线自动构建镜像并发布,默认使用`docker buildx`插件来构建amd64和arm64两种,构建的指令方式为: +- 切换到`[应用名]/[应用版本号]/[openEuler版本号]`目录 +- 执行`docker buildx build -t tag_name --platform linux/amd64,linux/arm64 .` #### 国内镜像仓 diff --git a/grafana/7.5.11/22.03-lts/Dockerfile b/grafana/7.5.11/22.03-lts/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ddc441f0ffe68eadd9d2e0fead4efdbc66c20668 --- /dev/null +++ b/grafana/7.5.11/22.03-lts/Dockerfile @@ -0,0 +1,20 @@ +FROM openeuler/openeuler:22.03-lts +MAINTAINER heguofeng +RUN yum -y update && \ + yum -y install sudo && \ + yum -y install grafana && \ + yum clean all + +ENV PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \ + GF_PATHS_DATA="/var/lib/grafana" \ + GF_PATHS_HOME="/usr/share/grafana" \ + GF_PATHS_LOGS="/var/log/grafana" \ + GF_PATHS_PLUGINS="/var/lib/grafana/plugins" \ + GF_PATHS_PROVISIONING="/etc/grafana/provisioning" + +EXPOSE 3000 + +COPY ./entrypoint.sh / +USER grafana +ENTRYPOINT [ "/entrypoint.sh" ] diff --git a/grafana/7.5.11/22.03-lts/entrypoint.sh b/grafana/7.5.11/22.03-lts/entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..3c5ddf7e968f03c00bd08d166901c81a276e1dc9 --- /dev/null +++ b/grafana/7.5.11/22.03-lts/entrypoint.sh @@ -0,0 +1,68 @@ +#!/bin/bash -e + +PERMISSIONS_OK=0 + +if [ ! -r "$GF_PATHS_CONFIG" ]; then + echo "GF_PATHS_CONFIG='$GF_PATHS_CONFIG' is not readable." + PERMISSIONS_OK=1 +fi + +if [ ! -w "$GF_PATHS_DATA" ]; then + echo "GF_PATHS_DATA='$GF_PATHS_DATA' is not writable." + PERMISSIONS_OK=1 +fi + +if [ ! -r "$GF_PATHS_HOME" ]; then + echo "GF_PATHS_HOME='$GF_PATHS_HOME' is not readable." + PERMISSIONS_OK=1 +fi + +if [ $PERMISSIONS_OK -eq 1 ]; then + echo "You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later" +fi + +if [ ! -d "$GF_PATHS_PLUGINS" ]; then + mkdir "$GF_PATHS_PLUGINS" +fi + +# Convert all environment variables with names ending in __FILE into the content of +# the file that they point at and use the name without the trailing __FILE. +# This can be used to carry in Docker secrets. +for VAR_NAME in $(env | grep '^GF_[^=]\+__FILE=.\+' | sed -r "s/([^=]*)__FILE=.*/\1/g"); do + VAR_NAME_FILE="$VAR_NAME"__FILE + if [ "${!VAR_NAME}" ]; then + echo >&2 "ERROR: Both $VAR_NAME and $VAR_NAME_FILE are set (but are exclusive)" + exit 1 + fi + echo "Getting secret $VAR_NAME from ${!VAR_NAME_FILE}" + export "$VAR_NAME"="$(< "${!VAR_NAME_FILE}")" + unset "$VAR_NAME_FILE" +done + +export HOME="$GF_PATHS_HOME" + +if [ ! -z "${GF_INSTALL_PLUGINS}" ]; then + OLDIFS=$IFS + IFS=',' + for plugin in ${GF_INSTALL_PLUGINS}; do + IFS=$OLDIFS + if [[ $plugin =~ .*\;.* ]]; then + pluginUrl=$(echo "$plugin" | cut -d';' -f 1) + pluginInstallFolder=$(echo "$plugin" | cut -d';' -f 2) + grafana-cli --pluginUrl ${pluginUrl} --pluginsDir "${GF_PATHS_PLUGINS}" plugins install "${pluginInstallFolder}" + else + grafana-cli --pluginsDir "${GF_PATHS_PLUGINS}" plugins install ${plugin} + fi + done +fi + +exec grafana-server \ + --homepath="$GF_PATHS_HOME" \ + --config="$GF_PATHS_CONFIG" \ + --packaging=docker \ + "$@" \ + cfg:default.log.mode="console" \ + cfg:default.paths.data="$GF_PATHS_DATA" \ + cfg:default.paths.logs="$GF_PATHS_LOGS" \ + cfg:default.paths.plugins="$GF_PATHS_PLUGINS" \ + cfg:default.paths.provisioning="$GF_PATHS_PROVISIONING" diff --git a/grafana/README.md b/grafana/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2d61db10974814dde96c29b2c5293a4195b3fc0f --- /dev/null +++ b/grafana/README.md @@ -0,0 +1,30 @@ +# grafana + +# Quick reference + +- The official grafana docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) + +# Build reference + +1. Build images and push: +```shell +docker buildx build -t "openeuler/grafana:$VERSION" --platform linux/amd64,linux/arm64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +# How to use this image +```shell +docker run --name my_grafana -d -p 3000:3000 openeuler/grafana:$VERSION +``` + +# Supported tags and respective Dockerfile links + +- 7.5.11-22.03-lts: grafana v7.5.11, openEuler 22.03 LTS + +## Operating System +Linux/Unix, ARM64 or x86-64 architecture. diff --git a/memcached/1.6.12/22.03-lts/Dockerfile b/memcached/1.6.12/22.03-lts/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..b0ab45be342693f9589d664c94f3812ba9917cdb --- /dev/null +++ b/memcached/1.6.12/22.03-lts/Dockerfile @@ -0,0 +1,8 @@ +FROM openeuler/openeuler:22.03-lts +MAINTAINER heguofeng +RUN yum -y update && \ + yum -y install memcached && \ + yum clean all + +EXPOSE 11211 +CMD ["memcached", "-u", "daemon"] diff --git a/memcached/README.md b/memcached/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e55eed7cfce67535f8a7c5e97265b5ef18640fe2 --- /dev/null +++ b/memcached/README.md @@ -0,0 +1,30 @@ +# memcached + +# Quick reference + +- The official memcached docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) + +# Build reference + +1. Build images and push: +```shell +docker buildx build -t "openeuler/memcached:$VERSION" --platform linux/amd64,linux/arm64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +# How to use this image +```shell +docker run --name my_memcached -d -p 11211:11211 openeuler/memcached:$VERSION +``` + +# Supported tags and respective Dockerfile links + +- 1.6.12-22.03-lts: memcached v1.6.12, openEuler 22.03 LTS + +## Operating System +Linux/Unix, ARM64 or x86-64 architecture. diff --git a/nginx/1.21.5/22.03-lts/Dockerfile b/nginx/1.21.5/22.03-lts/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..6a35a11d674abfa6819e5d1b345897d0e0b1ece1 --- /dev/null +++ b/nginx/1.21.5/22.03-lts/Dockerfile @@ -0,0 +1,6 @@ +FROM openeuler/openeuler:22.03-lts +MAINTAINER heguofeng +RUN yum -y update \ + && yum -y install nginx \ + && yum clean all +ENTRYPOINT ["nginx", "-g", "daemon off;"] diff --git a/nginx/README.md b/nginx/README.md index a2e2d7f5e5e4c57898e6f9e2d13a5f62a660ea24..82932dce4a4a995f1ce72f38c59d92e2ceda272f 100644 --- a/nginx/README.md +++ b/nginx/README.md @@ -19,12 +19,13 @@ We are using `buildx` in here to generate multi-arch images, see more in [Docker 2. Run: ```shell -docker run -d openeuler/nginx:1.16.1-20.03-lts-sp1 +docker run -d openeuler/nginx:$VERSION ``` # Supported tags and respective Dockerfile links - 1.16.1-20.03-lts-sp1: nginx v1.16.1, openEuler 20.03 LTS SP1 +- 1.21.5-22.03-lts: nginx v1.21.5, openEuler 22.03 LTS ## Operating System Linux/Unix, ARM64 or x86-64 architecture. diff --git a/opengauss-lite/2.1.0/22.03-lts/Dockerfile b/opengauss-lite/2.1.0/22.03-lts/Dockerfile index b2eed2bc8ee9a30ba3cb2d9bddd75812d0e9904b..044e479bf7fceb36b9b9bf5e5eac40c40fb04489 100644 --- a/opengauss-lite/2.1.0/22.03-lts/Dockerfile +++ b/opengauss-lite/2.1.0/22.03-lts/Dockerfile @@ -3,7 +3,7 @@ MAINTAINER heguofeng RUN yum -y update && \ yum -y install sudo util-linux lsof && \ yum -y install opengauss && \ - su - opengauss -c "gs_ctl stop -D /var/lib/opengauss/data -mf " && \ + su - opengauss -c "gs_ctl stop -D /var/lib/opengauss/data -mi " && \ rm -rf /var/lib/opengauss/data && \ sed -i 's/7654/5432/g' /var/lib/opengauss/.bash_profile && \ sed -i "s/listen_addresses = '127.0.0.1'/listen_addresses = '0.0.0.0'/g" /usr/local/opengauss/share/postgresql/postgresql.conf.sample && \ diff --git a/openssh-server/8.8_p1/22.03-lts/Dockerfile b/openssh-server/8.8_p1/22.03-lts/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ab6af0f488ca0a5de71191c1db790b22d1e23534 --- /dev/null +++ b/openssh-server/8.8_p1/22.03-lts/Dockerfile @@ -0,0 +1,10 @@ +FROM openeuler/openeuler:22.03-lts +MAINTAINER heguofeng +RUN yum -y update && \ + yum -y install openssh-server && \ + sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config && \ + sed -i 's/#Port 22/Port 2222/g' /etc/ssh/sshd_config && \ + yum clean all + +COPY keygen.sh /keygen.sh +EXPOSE 2222 diff --git a/openssh-server/8.8_p1/22.03-lts/keygen.sh b/openssh-server/8.8_p1/22.03-lts/keygen.sh new file mode 100755 index 0000000000000000000000000000000000000000..b2771ffac2837e14b7ec0bf896b0104d670e3c3d --- /dev/null +++ b/openssh-server/8.8_p1/22.03-lts/keygen.sh @@ -0,0 +1,29 @@ +#! /bin/bash + +# selection menu +echo "Please select your key type to generate" +printf "1.) ecdsa\n2.) rsa\n3.) ed25519\n4.) dsa\n[default ecdsa]:" +read opt +case $opt in + "ecdsa"|1) TYPE="ecdsa" BITS="-b 521";; + "rsa"|2) TYPE="rsa";; + "ed25519"|3) TYPE="ed25519";; + "dsa"|4) TYPE="dsa";; + *) echo "blank or unknown option choosing ecdsa" && TYPE="ecdsa" BITS="-b 521";; +esac +# rsa bit selection +if [[ "$TYPE" == "rsa" ]]; then +echo "Please select RSA bits" +printf "1.) 4096\n2.) 2048\n3.) 1024\n[default 4096]:" +read opt +case $opt in + 4096|1) BITS="-b 4096";; + 2048|2) BITS="-b 2048";; + 1024|3) BITS="-b 1024";; + *) echo "blank or unknown option choosing 4096" && BITS="-b 4096";; +esac +fi + +# key generation +echo "YOUR KEY/PUBFILE IS BELOW PLEASE SAVE THIS DATA AS WE WILL NOT" +echo /tmp/stderr{,.pub} | xargs -n 1 ln -sf /dev/stderr && yes | ssh-keygen -t ${TYPE} ${BITS} -N '' -qf /tmp/stderr > /dev/null diff --git a/openssh-server/README.md b/openssh-server/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b675dbd146848b79d6b64f5c6af18d381c022043 --- /dev/null +++ b/openssh-server/README.md @@ -0,0 +1,35 @@ +# openssh-server + +# Quick reference + +- The official openssh-server docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) + +# Build reference + +1. Build images and push: +```shell +docker buildx build -t "openeuler/openssh-server:$VERSION" --platform linux/amd64,linux/arm64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +2. Run: +## Key Generation +```shell +docker run --rm -it --entrypoint /keygen.sh openeuler/openssh-server:$VERSION +``` +## Run as daemon +```shell +docker run -d openeuler/openssh-server:$VERSION +``` + +# Supported tags and respective Dockerfile links + +- 8.8_p1-22.03-lts: python v8.8_p1, openEuler 22.03 LTS + +## Operating System +Linux/Unix, ARM64 or x86-64 architecture. diff --git a/prometheus/2.20.0/22.03-lts/Dockerfile b/prometheus/2.20.0/22.03-lts/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..68e40f7dfe018aee0f96379a124b6cd2c5500430 --- /dev/null +++ b/prometheus/2.20.0/22.03-lts/Dockerfile @@ -0,0 +1,19 @@ +FROM openeuler/openeuler:22.03-lts +MAINTAINER heguofeng +RUN yum -y update && \ + yum -y install prometheus2 && \ + yum clean all + +WORKDIR /prometheus +RUN ln -s /usr/share/prometheus/console_libraries /usr/share/prometheus/consoles/ /etc/prometheus/ && \ + chown -R prometheus:prometheus /etc/prometheus /prometheus + +USER prometheus + +VOLUME [ "/prometheus" ] +EXPOSE 9090 +ENTRYPOINT [ "/bin/prometheus" ] +CMD [ "--config.file=/etc/prometheus/prometheus.yml", \ + "--storage.tsdb.path=/prometheus", \ + "--web.console.libraries=/usr/share/prometheus/console_libraries", \ + "--web.console.templates=/usr/share/prometheus/consoles" ] diff --git a/prometheus/README.md b/prometheus/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e02293b91c43988747fd565ccd7d9e6c704269f3 --- /dev/null +++ b/prometheus/README.md @@ -0,0 +1,30 @@ +# prometheus + +# Quick reference + +- The official prometheus docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) + +# Build reference + +1. Build images and push: +```shell +docker buildx build -t "openeuler/prometheus:$VERSION" --platform linux/amd64,linux/arm64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +# How to use this image +```shell +docker run --name my_prometheus -d -p 9090:9090 openeuler/prometheus:$VERSION +``` + +# Supported tags and respective Dockerfile links + +- 2.20.0-22.03-lts: prometheus v2.20.0, openEuler 22.03 LTS + +## Operating System +Linux/Unix, ARM64 or x86-64 architecture. diff --git a/rabbitmq/3.9.10/22.03-lts/Dockerfile b/rabbitmq/3.9.10/22.03-lts/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..5ada602e24cc0fc543f075ce28dc037e808045af --- /dev/null +++ b/rabbitmq/3.9.10/22.03-lts/Dockerfile @@ -0,0 +1,30 @@ +FROM openeuler/openeuler:22.03-lts +MAINTAINER heguofeng + +RUN yum -y update && \ + yum -y install sudo hostname && \ + yum -y install rabbitmq-server && \ + rabbitmq-plugins enable --offline rabbitmq_prometheus && \ + mkdir -p /etc/rabbitmq/conf.d && \ + echo 'management_agent.disable_metrics_collector = true' > /etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf && \ + chown rabbitmq:rabbitmq /etc/rabbitmq -R && \ + ln -sf /usr/lib/rabbitmq/lib/rabbitmq_server-3.9.10/plugins /plugins && \ + yum clean all + +ENV EXEC_GOSU="gosu-amd64" + +RUN if [ "`arch`" == "x86_64" ]; then EXEC_GOSU="gosu-amd64"; else EXEC_GOSU="gosu-arm64"; fi + +COPY $EXEC_GOSU /usr/local/bin/gosu + +ENV RABBITMQ_DATA_DIR=/var/lib/rabbitmq +ENV HOME $RABBITMQ_DATA_DIR +VOLUME $RABBITMQ_DATA_DIR + +ENV LANG=C.UTF-8 LANGUAGE=C.UTF-8 LC_ALL=C.UTF-8 + +COPY entrypoint.sh /usr/local/bin/ +ENTRYPOINT ["entrypoint.sh"] + +EXPOSE 5672 15672 +CMD ["rabbitmq-server"] diff --git a/rabbitmq/3.9.10/22.03-lts/entrypoint.sh b/rabbitmq/3.9.10/22.03-lts/entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..c1c55b6d26ae3322832616285556e06b1543db95 --- /dev/null +++ b/rabbitmq/3.9.10/22.03-lts/entrypoint.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -euo pipefail + +# allow the container to be started with `--user` +if [[ "$1" == rabbitmq* ]] && [ "$(id -u)" = '0' ]; then + if [ "$1" = 'rabbitmq-server' ]; then + find /var/lib/rabbitmq \! -user rabbitmq -exec chown rabbitmq '{}' + + fi + + exec gosu rabbitmq "$BASH_SOURCE" "$@" +fi + +deprecatedEnvVars=( + RABBITMQ_DEFAULT_PASS_FILE + RABBITMQ_DEFAULT_USER_FILE + RABBITMQ_MANAGEMENT_SSL_CACERTFILE + RABBITMQ_MANAGEMENT_SSL_CERTFILE + RABBITMQ_MANAGEMENT_SSL_DEPTH + RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT + RABBITMQ_MANAGEMENT_SSL_KEYFILE + RABBITMQ_MANAGEMENT_SSL_VERIFY + RABBITMQ_SSL_CACERTFILE + RABBITMQ_SSL_CERTFILE + RABBITMQ_SSL_DEPTH + RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT + RABBITMQ_SSL_KEYFILE + RABBITMQ_SSL_VERIFY + RABBITMQ_VM_MEMORY_HIGH_WATERMARK +) +hasOldEnv= +for old in "${deprecatedEnvVars[@]}"; do + if [ -n "${!old:-}" ]; then + echo >&2 "error: $old is set but deprecated" + hasOldEnv=1 + fi +done +if [ -n "$hasOldEnv" ]; then + echo >&2 'error: deprecated environment variables detected' + echo >&2 + echo >&2 'Please use a configuration file instead; visit https://www.rabbitmq.com/configure.html to learn more' + echo >&2 + exit 1 +fi + +# if long and short hostnames are not the same, use long hostnames +if [ -z "${RABBITMQ_USE_LONGNAME:-}" ] && [ "$(hostname)" != "$(hostname -s)" ]; then + : "${RABBITMQ_USE_LONGNAME:=true}" +fi + +exec "$@" diff --git a/rabbitmq/3.9.10/22.03-lts/gosu-amd64 b/rabbitmq/3.9.10/22.03-lts/gosu-amd64 new file mode 100755 index 0000000000000000000000000000000000000000..834951f8910b8f4f88d626a05c9c0cdce527f967 Binary files /dev/null and b/rabbitmq/3.9.10/22.03-lts/gosu-amd64 differ diff --git a/rabbitmq/3.9.10/22.03-lts/gosu-arm64 b/rabbitmq/3.9.10/22.03-lts/gosu-arm64 new file mode 100755 index 0000000000000000000000000000000000000000..925e16ed1ff020e522c815ae4b6b8349634ef30a Binary files /dev/null and b/rabbitmq/3.9.10/22.03-lts/gosu-arm64 differ diff --git a/rabbitmq/README.md b/rabbitmq/README.md new file mode 100644 index 0000000000000000000000000000000000000000..31bc17b7ef011047cd3d6e15bd308d43aadf2ad2 --- /dev/null +++ b/rabbitmq/README.md @@ -0,0 +1,30 @@ +# rabbitmq + +# Quick reference + +- The official prometheus docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) + +# Build reference + +1. Build images and push: +```shell +docker buildx build -t "openeuler/rabbitmq:$VERSION" --platform linux/amd64,linux/arm64 . --push +``` + +We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) + +# How to use this image +```shell +docker run --name my_rabbitmq -d -p 5672:5672 -p 15672:15672 openeuler/rabbitmq:$VERSION +``` + +# Supported tags and respective Dockerfile links + +- 3.9.10-22.03-lts: rabbitmq v3.9.10, openEuler 22.03 LTS + +## Operating System +Linux/Unix, ARM64 or x86-64 architecture.