apisix-java-plugin-runner icon indicating copy to clipboard operation
apisix-java-plugin-runner copied to clipboard

request help: How to get Spring env value from Docker environment

Open vttranlina opened this issue 1 year ago • 1 comments

Issue description

As I know the plugin is based on the Spring framework. I have configured below in the application.yaml:

redis:
  url: ${REDIS_URL:redis://localhost:6379}

Now, I want to set REDIS_URL by the docker environment. Eg:

  apisix:
    container_name: apisix.example.com
    image: apisix:3.2.0-debian-javaplugin
    volumes:
      - ./apisix/conf/config.yaml:/usr/local/apisix/conf/config.yaml
    environment:
      - REDIS_URL=redis://kimchi:6379
  • Expected: apisix-java-plugin should start succeed with REDIS_URL=redis://kimchi:6379
  • Actual: apisix-java-plugin can not get REDIS_URL from env

My trace

  • I ensured when the container started, I could get the correct REDIS_URL by cmd java -jar my_plugin.jar (run it directly by hand, not via ext-plugin.cmd
  • I'm not a Lua developer, but I checked the log, I suspect the Java app maybe run by Lua script, and in this way, the plugin can't get the value from the environment

Environment

  • apisix:3.2.0-debian
  • apache-apisix-java-plugin-runner-0.4.0
  • Apisix and Apisix Plugin run in the same container
  • config.yaml
deployment:
  role: data_plane
  role_data_plane:
    config_provider: yaml

ext-plugin:
  path_for_test: /tmp/runner.sock
  cmd: ['java', '-jar', '-Xmx1g', '-Xms1g', '/usr/local/apisix/token_revoker_plugin.jar']

vttranlina avatar May 12 '23 10:05 vttranlina

It looks imposible, From the document

Nginx will hide all environment variables by default https://apisix.apache.org/docs/apisix/external-plugin/#when-managing-by-apisix-the-runner-cant-access-my-environment-variable

vttranlina avatar May 15 '23 03:05 vttranlina