I am trying to deploy a streamlit app using Docker. I would like to be able to pass the port to the streamlit run command in my Docker container (I am currently using Docker CMD to run streamlit) as an environment variable. However, there are documented issues with passing environment variables to Docker CMD, and the suggested workaround is to use the sh -c form of CMD, see issues here and here. However, this does not work with streamlit. For example if I modify my streamlit run command to look like this CMD ["sh", "-c", "streamlit", "run", "app.py", "--server.port=${PORT}", "--server.address=0.0.0.0"] (where ENV port 8502), streamlit thinks I am trying to pass sh -c to it. Has anyone found a workaround for this issue?
Sounds like your docker ENTRYPOINT is specific to streamlit, if youβre able to share it someone might be able to point you in a better direction.
You might be able to get away with a CMD ["app.py", "--server.port=${PORT}", "--server.address=0.0.0.0"]
If you can change your dockerfile and add an entrypoint.sh script it might be the most straightforward way to extend these needs.