apache / apisix-docker

the docker for Apache APISIX
https://apisix.apache.org/
Apache License 2.0
702 stars 442 forks source link

bug: error related to mounted `config.yaml` in standalone mode (3.8.0, 3.9.0) #541

Open kayx23 opened 7 months ago

kayx23 commented 7 months ago

Current State

With the new 3.8.0-debian image, I was unable to access route defined in the apisix.yaml:

standalone-not-working

Note that:

  1. the problem goes away if I do not mount config.yaml. In other words, if I just mount apisix.yaml with a route config, I could access the route successfully.
  2. this was not an issue in 3.5.0 (unable to test with 3.6.0 and 3.7.0 due to sed error), so something may have changed. See screenshot below:

350-no-issue

Therefore, this looks like an error related to mounting config.yaml.

Logs

2024/01/16 14:11:04 [error] 35#35: *6 [lua] config_yaml.lua:211: failed to check item data of [routes] err:allOf 1 failed: value should match only one schema, but matches none ,val: {"priority":0,"status":1}, context: init_worker_by_lua*
2024/01/16 14:11:04 [warn] 39#39: *5 [lua] plugin.lua:255: load_stream(): new plugins: {"limit-conn":true,"ip-restriction":true,"syslog":true,"mqtt-proxy":true}, context: init_worker_by_lua*
2024/01/16 14:11:04 [error] 38#38: *2 [lua] config_yaml.lua:211: failed to check item data of [routes] err:allOf 1 failed: value should match only one schema, but matches none ,val: {"priority":0,"status":1}, context: init_worker_by_lua*
2024/01/16 14:11:04 [warn] 41#41: *8 [lua] plugin.lua:255: load_stream(): new plugins: {"limit-conn":true,"ip-restriction":true,"syslog":true,"mqtt-proxy":true}, context: init_worker_by_lua*
2024/01/16 14:11:04 [error] 39#39: *5 [lua] config_yaml.lua:211: failed to check item data of [routes] err:allOf 1 failed: value should match only one schema, but matches none ,val: {"priority":0,"status":1}, context: init_worker_by_lua*
2024/01/16 14:11:04 [error] 41#41: *8 [lua] config_yaml.lua:211: failed to check item data of [routes] err:allOf 1 failed: value should match only one schema, but matches none ,val: {"priority":0,"status":1}, context: init_worker_by_lua*
2024/01/16 14:11:04 [warn] 46#46: *9 [lua] plugin.lua:255: load_stream(): new plugins: {"limit-conn":true,"ip-restriction":true,"syslog":true,"mqtt-proxy":true}, context: init_worker_by_lua*
2024/01/16 14:11:04 [error] 46#46: *9 [lua] config_yaml.lua:211: failed to check item data of [routes] err:allOf 1 failed: value should match only one schema, but matches none ,val: {"priority":0,"status":1}, context: init_worker_by_lua*
kayx23 commented 7 months ago

@jingzhao-self I remembered you said your fix worked so it might or might not related to your change. When you are available, could you please test with the new image 3.8.0-debian to see if you could reproduce this issue? Thanks.

cc: @monkeyDluffy6017 @shreemaan-abhishek

ghost commented 6 months ago

This issue is caused by docker-entrypoint.sh https://github.com/apache/apisix-docker/blob/2ddd3045bcc3a6f54116bf7559fa5918892423d8/debian/docker-entrypoint.sh#L23C1-L45C6

When in standalone mode this script tries to create the config.yaml file or update it's keys. I'm not quite sure why this done as we are able to provide ourselves a valid config.yaml when working in standalone mode.

I suggest removing the file update part. This way if the provided file is invalid the deployment would simply fail, but if it is not provided the script would create it for us.

ghost commented 5 months ago

I've come up with a simple fix to bypass the issue.

When working with the Docker image I override the entrypoint with bash and set the command as -c "/usr/bin/apisix init && exec /usr/local/openresty/bin/openresty -p /usr/local/apisix -g 'daemon off;'"

This will start the gateway and forgo the entrypoint config file initialization.

kayx23 commented 5 months ago

Thanks, will you be opening a PR?

ghost commented 5 months ago

Yeah, sure. I can try that.

ghost commented 5 months ago

I've opened the pull request (https://github.com/apache/apisix-docker/pull/547). Hope we can fix it.

Jacky-Law commented 4 months ago

apache/apisix:3.9.0出现同样问题,volume配置文件没有效果

kayx23 commented 4 months ago

yep, it's not fixed yet...

github-actions[bot] commented 3 months ago

This issue has been marked as stale due to 30 days of inactivity. It will be closed in 2 weeks if no further activity occurs. If this issue is still relevant, please simply write any comment. Even if closed, you can still revive the issue at any time or discuss it on the dev@apisix.apache.org list. Thank you for your contributions.

github-actions[bot] commented 2 months ago

This issue has been marked as stale due to 30 days of inactivity. It will be closed in 2 weeks if no further activity occurs. If this issue is still relevant, please simply write any comment. Even if closed, you can still revive the issue at any time or discuss it on the dev@apisix.apache.org list. Thank you for your contributions.

kayx23 commented 2 months ago

Issue is still relevant

github-actions[bot] commented 1 month ago

This issue has been marked as stale due to 30 days of inactivity. It will be closed in 2 weeks if no further activity occurs. If this issue is still relevant, please simply write any comment. Even if closed, you can still revive the issue at any time or discuss it on the dev@apisix.apache.org list. Thank you for your contributions.

github-actions[bot] commented 2 days ago

This issue has been marked as stale due to 30 days of inactivity. It will be closed in 2 weeks if no further activity occurs. If this issue is still relevant, please simply write any comment. Even if closed, you can still revive the issue at any time or discuss it on the dev@apisix.apache.org list. Thank you for your contributions.