2016-10-27 1 views
1

Я пытаюсь разместить пользовательский интерфейс Swagger на контейнере докеров, используя Nginx.Статическая веб-страница Nankx Docker Container Missing CSS

Когда я получаю доступ к своей веб-странице через hostAddress.com, он возвращает веб-страницу в виде обычного текста, и, проверяя ее, он сообщает мне, что он не может найти ни один из файлов javascript или css, несмотря на то, что они кажутся присутствующими в контейнере, поскольку у меня есть ssh в контейнер для проверки.

Мой dockerfile

FROM nginx 
COPY src /usr/share/nginx/html 
COPY config/nginx.conf /etc/nginx 
EXPOSE 80 

nginx.config

events { 
    worker_connections 4096; ## Default: 1024 
} 

http { 
    server { 
listen  80; 
server_name localhost; 
root /usr/share/nginx/html; 
index index.html index.htm; 
include /etc/nginx/mime.types; 


    location /swagger { 
    try_files $uri /index.html; 
} 

#Static File Caching. All static files with the following extension will be cached for 1 day 
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { 
    expires 1d; 
    } 
    } 
} 
+0

, пожалуйста, посмотрите, поможет ли это, может быть, альтернатива - https://github.com/ianneub/docker-swagger-ui – Rao

+0

посмотрел на это, однако из-за других вещей, работающих на том же сервере мне нужно чтобы иметь возможность назначить местоположение/чванство, которое, как я думаю, не возможно с этим. – user3473406

+0

Вы имеете в виду пользовательский контекстный путь к URL-адресу? Вы можете посмотреть его «Dockerfile», который доступен там и сделать свое, работает? – Rao

ответ

0

Вот что вы можете сделать этого добиться.

Как уже было сказано комментарий, вы можете скачать артефакты из https://github.com/ianneub/docker-swagger-ui/blob/master

  • Создать каталог сказать ngix
  • Copy Dockerfile, run.sh в этот каталог
  • Редактировать в Dockerfile сделать настройку что вам необходимо изменить местоположение, как показано ниже:
FROM nginx:1.9 

ENV SWAGGER_UI_VERSION 2.1.2-M2 
ENV URL **None** 

RUN apt-get update \ 
    && apt-get install -y curl \ 
    && curl -L https://github.com/swagger-api/swagger-ui/archive/v${SWAGGER_UI_VERSION}.tar.gz | tar -zxv -C /tmp \ 
    && mkdir /usr/share/nginx/html/swagger \ 
    && cp -R /tmp/swagger-ui-${SWAGGER_UI_VERSION}/dist/* /usr/share/nginx/html/swagger \ 
    && rm -rf /tmp/* 

COPY run.sh /run.sh 

CMD ["/run.sh"] 
  • Если сравнить вышеуказанные изменения с оригинальным Dockerfile, есть изменения, сделанные в строках 9, 10, чтобы включить дополнительный путь т.е. swagger. Конечно, вы можете изменить по мере необходимости.

Затем выполните следующие докер команды для создания и запуска

сборки Изображение:

docker build -t myswagger . 

Выполнить это

docker run -it --rm -p 3000:80 --name testmyswagger -e "URL=http://petstore.swagger.io/v2/swagger.json" myswagger 

Теперь вы должны быть в состоянии воспользуйтесь http://localhost:3000/swagger/index.html

+0

Спасибо, что помогли заработали, последовали за этим и заставили его работать. Затем вернулась к моей первоначальной попытке и добавила папку swagger и использовала конфигурацию для добавления index.html в конец URL-адреса, и он отлично ее возвращает. – user3473406

+0

@ user3473406, рад узнать, что этот ответ полезен. – Rao

Смежные вопросы