Forum Discussion

subhrajp's avatar
subhrajp
New Member
3 years ago

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.
No RepliesBe the first to reply