Let pglet know that the application is served under a different root path - set root path
After trying to work with pglet app (using python package) in a docker container on our enterprise Kubernetes platform, it seems that pglet does not take the path of the application into account.
That means I need to instruct the framework to take into account that my app is running under /pglet instead of the default / (root) path.
For that, having a setting in the pglet.app() function would be awesome.
Could you please elaborate on why it's needed? In the latest Pglet Python module pglet executable comes bundled with Python module and it's basically run from "site-packages" folder (or whatever Python modules are getting installed into).
I am trying to deploy the app in a docker container on our kubernetes cluster. The app is named pglet and I should be able to access it under the following url: https://our.app.cluster.adderss/pglet.
I am running the app within the docker container using the local=True setting.
Instead, when loading, the app tries to load from https://our.app.cluster.address/static/... while it should be looking at https://our.app.cluster.address/pglet/static/. Looking further, css is served from that location.
For instance: https://our.app.cluster.address/pglet/static/css/main.ed4163d0.chunk.css returns:
.ms-Viewport{width:100%}span.ms-layer{margin:0!important}pre{margin:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}
Running the same app locally, there is no issue, and the adress is anyway localhost:5000/p/page-name.
Here is the code I am trying to run:
from pglet import Stack, Icon, Button
def main(page):
page.title = "Icons example"
page.gap = 20
page.update()
icon1 = Icon("WebAppBuilderFragment", color='Orange20', size=25)
page.add(Text("this is a text."))
page.add(
Stack(horizontal=True, border= "1px solid #65AC1E", controls=[
Button(icon="WebAppBuilderFragment",title="Yeepi",height=60, width=60,icon_color="#65AC1E"),
Button("cool!",icon="WebAppBuilderFragment",title="Yeepi",height=60, width=60)
]),
Stack(horizontal=True, controls=[
Icon("ChangeEntitlements", color='Magenta20'),
Icon("shop", color='CyanBlue10'),
Icon("TrainSolid")
]),
Stack(horizontal=True, vertical_align='center', controls=[
Icon("BlockedSite", color='Orange20', size=25),
Icon("settings", color='Gray20', size=50),
Icon("save", color='Blue10', size=100)
])
)
print("Starting app...")
pglet.app("python-icon", target=main, local=True)
print("App started...")
I see. Let me look into that. Indeed, all URLs to resources inside index.html start from /.
@FeodorFitsner, did you have a chance to look at the issue?
Yes, I've been able to look into that. Suprisingly, it's non-trivial to make CRA app to work good from both root and a sub-directory. Whewn publishing app an application URL is getting embedded into index.html, JS and CSS comprising app bundle. It looks like it's impossible to change it whithout dynamic processing of assets on the server with some filters. I'm wondering if there is a better way to do it on k8s/ingress side?