Skip to main content
Version: 2.6.1

Docker Deployment

This article introduces the use of docker to deploy the Apache ShenYu gateway.

Before you read this document, you need to complete some preparations before deploying Shenyu according to the Deployment Prerequisites document.

Create Docker Network#

docker network create shenyu

Start Apache ShenYu Admin#

docker pull apache/shenyu-admin:${current.version}

After version 2.5.1, when docker run, we can customize JVM startup parameters by adding -e ADMIN_JVM="xxxx"

  • use h2 to store data:
docker run -d -p 9095:9095 --name shenyu-admin --net shenyu apache/shenyu-admin:${current.version}
docker run --name shenyu-admin -v /${your_work_dir}/ext-lib:/opt/shenyu-admin/ext-lib -e "SPRING_PROFILES_ACTIVE=mysql" -e "spring.datasource.url=jdbc:mysql://${your_ip_port}/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull" -e "spring.datasource.username=${your_username}" -e "spring.datasource.password=${your_password}" -d -p 9095:9095 --net shenyu apache/shenyu-admin:${current.version}

another way is to put the application.ymlapplication-mysql.yml configuration in ${your_work_dir}/conf from Configure address , modify the configuration spring.profiles.active = mysql in application.yml, and then execute the following statement:

docker run --name shenyu-admin -v ${your_work_dir}/conf:/opt/shenyu-admin/conf -v /${your_work_dir}/ext-lib:/opt/shenyu-admin/ext-lib -d -p 9095:9095 --net shenyu apache/shenyu-admin:${current.version}
  • use PostgreSql to store data, follow the guide document to initialize the database, execute the following statement:
docker run --name shenyu-admin -e "SPRING_PROFILES_ACTIVE=pg" -e "spring.datasource.url=jdbc:postgresql://${your_ip_port}/shenyu?useUnicode=true&characterEncoding=utf-8&useSSL=false" -e "spring.datasource.username=${your_username}" -e "spring.datasource.password=${your_password}" -d -p 9095:9095 --net shenyu apache/shenyu-admin:${current.version}

another way is to put the application.ymlapplication-pg.yml configuration in ${your_work_dir}/conf, modify the configuration spring.profiles.active = pg in application.yml,and then execute the following statement:

docker run --name shenyu-admin -v ${your_work_dir}/conf:/opt/shenyu-admin/conf -d -p 9095:9095 --net shenyu apache/shenyu-admin:${current.version}
  • use Oracle to store data, follow the guide document to initialize the database, execute the following statement:
docker run --name shenyu-admin -e "SPRING_PROFILES_ACTIVE=oracle" -e "spring.datasource.url=jdbc:oracle:thin:@localhost:1521/shenyu" -e "spring.datasource.username=${your_username}" -e "spring.datasource.password=${your_password}" -d -p 9095:9095 --net shenyu apache/shenyu-admin:${current.version}

another way is to put the application.ymlapplication-oracle.yml configuration in ${your_work_dir}/conf, modify the configuration spring.profiles.active = oracle in application.yml, and then execute the following statement:

docker run --name shenyu-admin -v ${your_work_dir}/conf:/opt/shenyu-admin/conf -d -p 9095:9095 --net shenyu apache/shenyu-admin:${current.version}
  • use OpenGauss to store data, follow the guide document to initialize the database, execute the following statement:
docker run --name shenyu-admin -e "SPRING_PROFILES_ACTIVE=og" -e "spring.datasource.url=jdbc:opengauss://localhost:5432/shenyu" -e "spring.datasource.username=${your_username}" -e "spring.datasource.password=${your_password}" -d -p 9095:9095 --net shenyu apache/shenyu-admin:${current.version}

another way is to put the application.ymlapplication-og.yml configuration in ${your_work_dir}/conf, modify the configuration spring.profiles.active = og in application.yml, and then execute the following statement:

docker run --name shenyu-admin -v ${your_work_dir}/conf:/opt/shenyu-admin/conf -d -p 9095:9095 --net shenyu apache/shenyu-admin:${current.version}

Start Apache ShenYu Bootstrap#

After version 2.5.1, when docker run, we can customize JVM startup parameters by adding -e BOOT_JVM="xxxx"

First, pull the docker image

docker pull apache/shenyu-bootstrap:${current.version}

If you don't need to modify the configuration, just use the command below to run the application

docker run -d \  -p 9195:9195 \  --name shenyu-bootstrap \  --net shenyu \  --env SHENYU_SYNC_WEBSOCKET_URLS=ws://shenyu-admin:9095/websocket \  apache/shenyu-bootstrap:${current.version}

SHENYU_SYNC_WEBSOCKET_URLS indicates the websocket address that shenyu-bootstrap used to communicate with shenyu-admin

If you need to modify the configuration, copy the configuration from the Github directory where the bootstrap configuration file is located, then recorded it as $BOOTSTRAP_CONF. After your modification, execute the command below to run the application

docker run -d \  -p 9195:9195 \  -v $BOOTSTRAP_CONF:/opt/shenyu-bootstrap/conf \  --name shenyu-bootstrap \  --net shenyu \  --env SHENYU_SYNC_WEBSOCKET_URLS=ws://shenyu-admin:9095/websocket \  apache/shenyu-bootstrap:${current.version}