2016-06-01 2 views
1

Я использую докер для запуска простого статического веб-проекта с использованием официального изображения nginx. В качестве зависимости бауера у меня есть ui lib, который является моим и разделяется между двумя моими проектами. Чтобы облегчить процесс разработки, я создал том для моей локальной машины для обслуживания локальных файлов через папку/html внутри контейнера nginx. Это отлично работает.Docker and bower links

Но, если я пытаюсь использовать Бауэр ссылку, чтобы создать связь между локальной копией моего Ui Lib и беседку зависимость веб-сервер Nginx не в состоянии найти папку, так как ссылка указывает на мой местный машина.

Я запускаю докер vm в Mac.

Неужели кто-то испытал нечто похожее и имеет представление о том, как его решить?

Спасибо,

ответ

1

я просто столкнуться с этой проблемой и нашел способ решить эту проблему красиво.

Проблема заключается в том, что при установке в качестве тома всей папки/html символические ссылки, созданные ссылкой bower, копируются в ваш контейнер, но не фактические папки, на которые они указывают. Когда nginx пытается обслуживать файл, он следует за символической ссылкой, но теперь находится внутри контейнера, где маршрут недействителен.

Чтобы исправить это, создайте другой том, который отображает символическую ссылку напрямую. Таким образом, компоновка докеров будет следовать символической ссылке перед установкой в ​​контейнер, поэтому копирование содержимого папки. Хорошая вещь об этом является то, что в вашей локальной файловой системы, которую вы до сих пор папку и символьной ссылки работать, так что вы можете работать, как обычно :)

Практический пример: Моя структура папок

/app 
|--/bower_components 
    |--/packageA 
    |--/packageB -> symlink to /foo/bar/packageB 

Мой Compose файл:

version: '2' 
services: 
    nginx: 
    volumes: 
    - .:/foo 
    - ./bower_components/packageB:/foo/bower_components/packageB 
... 

Сообщите мне, если это сработает, ура!