docker部署artemis之后Web Console页面空白

docker部署ActiveMQ Artemis Web页面空白

docker部署的Artemis,进入http://localhost:8161 登录之后 , 页面显示空白,没有显示 ActiveMQ Artemis Web 控制台
这里提供两个解决办法
docker部署artemis之后Web Console页面空白_第1张图片

解决方法 :

  • 在docker中使用nginx服务器创建了一个反向代理

    • docker run -d --name nginx-proxy -p 80:80 nginx
      
  • 使用以下命令将default.conf复制到本地系统

    • docker cp nginx-proxy:/etc/nginx/conf.d/default.conf .
      
  • 查看artemis 主机名称

    • docker exec artemis hostname -i
      
  • 修改 default.conf 文件内容

    • server {
          listen       80;
          listen  [::]:80;
          server_name  localhost;
      
          location / {
           if ($request_method = 'OPTIONS') {
              add_header Origin http://172.17.0.2;
              add_header 'Access-Control-Allow-Origin' '*';
      
              add_header 'Access-Control-Allow-Credentials' 'true';
              add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
              add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
      
              add_header 'Access-Control-Max-Age' 86400;
              add_header 'Content-Type' 'text/plain charset=UTF-8';
              add_header 'Content-Length' 0;
              return 204; break;
           }
      
           if ($request_method = 'POST') {
              add_header Origin http://172.17.0.2;
              add_header 'Access-Control-Allow-Origin' '*';
              add_header 'Access-Control-Allow-Credentials' 'true';
              add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
              add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
           }
           if ($request_method = 'GET') {
              add_header Origin http://172.17.0.2;
              add_header 'Access-Control-Allow-Origin' '*';
              add_header 'Access-Control-Allow-Credentials' 'true';
              add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
              add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
           }
      
            proxy_pass http://172.17.0.2:8161/;
            proxy_set_header Origin http://172.17.0.2;
            proxy_set_header Host      $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
          }
      
          #error_page  404              /404.html;
          # redirect server error pages to the static page /50x.html
          #
           error_page   500 502 503 504  /50x.html;
           location = /50x.html {
              root   /usr/share/nginx/html;
           }
      }
      
  • 复制到nginx容器中

    • docker cp default.conf nginx-proxy:/etc/nginx/conf.d/default.conf
      
  • 验证配置文件

    • docker exec nginx-proxy nginx -t
      
  • 刷新nginx配置文件

    • docker exec nginx-proxy nginx -s reload
      

此时由于我们nginx容器暴露了80端口,我们可以点击http://localhost:80/console访问ArtemisMQ页面。

docker部署artemis之后Web Console页面空白_第2张图片

注意 此方法只适合开发 , 不适合生产环境使用

但是还有一种方法是使用下面脚本

作用是在启动 ActiveMQ Artemis Broker 容器时,先执行一些配置

  1. 设置 BROKER_IP 环境变量为 0.0.0.0。
  2. 定义 configure 函数,该函数在第一次启动容器或 AMQ_RESET_CONFIG 环境变量被设置为 true 时调用,使用 AMQ_HOME/bin/artemis create 命令创建一个新的 Artemis Broker 实例,并根据配置设置一些参数,如 AMQ_ROLEAMQ_NAMEAMQ_USERAMQ_PASSWORDAMQ_CLUSTERED 等。
  3. 定义 postConfigure 函数,该函数将修改 jolokia-access.xml 和 bootstrap.xml 文件中的一些配置,以确保 Artemis Broker 可以正常运行。
  4. 最后,定义 runServer 函数,该函数将依次执行 configurepostConfigure 函数,并运行 Artemis Broker。

在容器启动时,该脚本将被映射到容器内的 /opt/amq/bin/launch.sh,并在启动容器时自动运行。

自定义脚本

#!/bin/sh

#  activemq:
#    image: quay.io/artemiscloud/activemq-artemis-broker
#    volumes:
#      - ./launch.sh:/opt/amq/bin/launch.sh

set -e

if [ "${SCRIPT_DEBUG}" = "true" ] ; then
    set -x
    echo "Script debugging is enabled, allowing bash commands and their arguments to be printed as they are executed"
fi

export BROKER_IP="0.0.0.0"

function configure() {

    export CONTAINER_ID=$HOSTNAME

    if [ ! -d "broker" -o "$AMQ_RESET_CONFIG" = "true" ]; then
        AMQ_ARGS="--role $AMQ_ROLE --name $AMQ_NAME --allow-anonymous --http-host $BROKER_IP --host $BROKER_IP "
        if [ -n "${AMQ_USER}" -a -n "${AMQ_PASSWORD}" ] ; then
                        AMQ_ARGS="--user $AMQ_USER --password $AMQ_PASSWORD $AMQ_ARGS "
                fi
        if [ "$AMQ_CLUSTERED" = "true" ]; then
            echo "Broker will be clustered"
            AMQ_ARGS="$AMQ_ARGS --clustered --cluster-user $AMQ_CLUSTER_USER --cluster-password $AMQ_CLUSTER_PASSWORD"
        fi
        if [ "$AMQ_RESET_CONFIG" ]; then
            AMQ_ARGS="$AMQ_ARGS --force"
        fi
        if [ "$AMQ_EXTRA_ARGS" ]; then
            AMQ_ARGS="$AMQ_ARGS $AMQ_EXTRA_ARGS"
        fi

        PRINT_ARGS="${AMQ_ARGS/--password $AMQ_PASSWORD/--password XXXXX}"
        PRINT_ARGS="${PRINT_ARGS/--user $AMQ_USER/--user XXXXX}"
        PRINT_ARGS="${PRINT_ARGS/--cluster-user $AMQ_CLUSTER_USER/--cluster-user XXXXX}"
        PRINT_ARGS="${PRINT_ARGS/--cluster-password $AMQ_CLUSTER_PASSWORD/--cluster-password XXXXX}"
        PRINT_ARGS="${PRINT_ARGS/--ssl-key-password $AMQ_KEYSTORE_PASSWORD/--ssl-key-password XXXXX}"
        PRINT_ARGS="${PRINT_ARGS/--ssl-trust-password $AMQ_TRUSTSTORE_PASSWORD/--ssl-trust-password XXXXX}"

        echo "Creating Broker with args $PRINT_ARGS"
        $AMQ_HOME/bin/artemis create broker $AMQ_ARGS
    fi

}

function postConfigure() {
  sed -i -E 's|.*?|*://*|g' /home/jboss/broker/etc/jolokia-access.xml
  sed -i -E 's|||g' /home/jboss/broker/etc/bootstrap.xml
}

function runServer() {
  configure
  postConfigure
  echo "Running Broker"
  exec ~/broker/bin/artemis run
}

runServer#

DockerFile

FROM quay.io/artemiscloud/activemq-artemis-broker:latest

COPY launch.sh $AMQ_HOME/bin/

USER root

RUN chmod 755 $AMQ_HOME/bin/launch.sh

USER jboss

ENV AMQ_RESET_CONFIG=false \
    AMQ_USER=admin \
    AMQ_PASSWORD=admin \
    AMQ_ROLE=amq \
    AMQ_NAME=mybroker \
    AMQ_CLUSTERED=false \
    AMQ_CLUSTER_USER=clusterUser \
    AMQ_CLUSTER_PASSWORD=clusterPassword \
    AMQ_EXTRA_ARGS=""

EXPOSE 5672 8161

CMD $AMQ_HOME/bin/launch.sh

编译镜像

docker build -t artemis-broker .

启动容器

docker run -d -p 8161:8161 -p 5672:5672 --name artemis artemis-broker

docker部署artemis之后Web Console页面空白_第3张图片

你可能感兴趣的:(docker,运维)