subhrajp
5 years agoNew Member
Not able to copy edited swagger API docs while running through docker
I am trying to run swagger-ui using docker but the updated swagger.json file is not reflecting on browser. I am explaining my code below.
# Looking for information on environment variables?
# We don't declare them here — take a look at our docs.
# https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md
FROM nginx:1.19-alpine
RUN apk --no-cache add nodejs
LABEL maintainer="fehguy"
ENV API_KEY "**None**"
ENV SWAGGER_JSON "/app/swagger.json"
ENV PORT 8080
ENV BASE_URL ""
ENV SWAGGER_JSON_URL ""
COPY ./docker/nginx.conf ./docker/cors.conf /etc/nginx/
# copy swagger files to the `/js` folder
COPY ./dist/* /usr/share/nginx/html/
COPY ./docker/run.sh /usr/share/nginx/
COPY ./docker/configurator /usr/share/nginx/configurator
RUN chmod +x /usr/share/nginx/run.sh && \
chmod -R a+rw /usr/share/nginx && \
chmod -R a+rw /etc/nginx && \
chmod -R a+rw /var && \
chmod -R a+rw /var/run
EXPOSE 8080
CMD ["sh", "/usr/share/nginx/run.sh"]
This the docker file which I am using to run by following command.
sudo docker build -t swagger-ui . sudo docker run -d -it -p 8080:8080 --name test-container-swagger swagger-ui:latest
I have put my updated swagger.json file inside the dist/index.html file.
<script>
window.onload = function() {
// Begin Swagger UI call region
const ui = SwaggerUIBundle({
url: "swagger.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
});
// End Swagger UI call region
window.ui = ui;
};
</script>
Here after building the image as per docker file the dist folder should copy to /usr/share/nginx/html/ inside docker. But when I am checking the index.html file inside usr/share/ngmix/html its looks like below.
window.onload = function() {
// Begin Swagger UI call region
const ui = SwaggerUIBundle({
url: "https://petstore.swagger.io/v2/swagger.json",
"dom_id": "#swagger-ui",
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout",
})
// End Swagger UI call region
window.ui = ui;
};
so here the url: "https://petstore.swagger.io/v2/swagger.json" is not replacing for which I am getting the wrong swagger UI. Here I need after building the docker image my updated swagger.json should reflect. Please help me to resolve this issue.