Docker-контейнер: добавьте символическую ссылку на /Users/www/[project] в /var/www для доступа и обслуживания локальных файлов.

Я пытаюсь обслуживать локальные файлы CFML на своем Mac через док-контейнер Lucee (https://hub.docker.com/r/lucee/lucee5/). Я дошел до того, что смонтировал конкретную папку на своем Mac в символическую ссылку в моих образах докеров docker run -it imagename -v /Users/[username]/www/projectx:/code /bin/bash Итак, на bash в образе докера у меня теперь есть /code. Затем я создаю символическую ссылку ln -s /code projectx в моем файле /var/www.

Когда я затем подаю изображение с запуском tomcat, а также монтирую папку

docker run -p 1337:8888 -v /Users/[username]/www/projectx:/code [imagename] catalina.sh run

Я ожидаю, что смогу получить доступ к http://localhost:1337/projectx К сожалению, он не может найти эту папку. Возможно, поскольку Lucee не распознает и не индексирует файлы во время выполнения?

Это возможно?

Результатом, на который я смотрю, является разработка моего приложения Coldfusion на моем MAC при запуске Lucee + mysql в моем контейнере докеров и локальном исходном коде, так что мне не нужно играть с общими ресурсами samba или другими способами, чтобы иметь возможность редактировать coldfusion в моей IDE. (Доля Samba перестала работать, когда я обновился до Sierra)


person Mattijs    schedule 18.12.2016    source источник


Ответы (2)


Рассматривали ли вы возможность простого монтирования каталога кода на /var/www, которая является точкой монтирования VOLUME по умолчанию в образе Lucee Docker? Если вы действительно хотите, чтобы он находился в подкаталоге /code, то создайте этот подкаталог на своем хосте вместо того, чтобы играть с символическими ссылками.

Простой способ сделать это — использовать docker-compose, например следующий docker-compose.yml

version: '2'

services:
  web:
    image: lucee/lucee5
    ports:
      - "1337:8888"
    volumes:
      - /Users/[username]/www/projectx:/var/www

Затем вы можете запустить это, используя docker-compose up

person Simon at My School Portal    schedule 06.01.2017
comment
Да, кажется, это работает. Блин, так намного проще. Единственное, что мне нужно исправить сейчас, это то, что в моей папке /projectx у меня есть 4 веб-сайта: Итак, /projectx/player/root (с index.cfm) и /projectx/custmer/root (с index.cfm и т. д.). .. На моем веб-сервере каждый из них представляет собой отдельный веб-сайт apache2, где корневая папка — это то, что настроено в apache.Поскольку я получаю доступ, например, localhost:1337/customer/root для этого потребуются отдельные настроенные веб-сайты. У меня немного туман в голове после сна, поэтому я не знаю, как решить эту проблему прямо сейчас. - person Mattijs; 08.01.2017
comment
Почему бы просто не установить apache и сделать так, чтобы он отражал вашу производственную среду? Я сделал именно это, установив apache поверх образа lucee5. - person Simon at My School Portal; 08.01.2017
comment
Я попытался изменить изображение lucee5, но затем я получаю код выхода 0, когда пытаюсь его запустить. Не совсем уверен, где я могу найти журнал или что происходит не так. Но да, apache был бы хорошим дополнением, чтобы я мог настроить несколько веб-сайтов и заставить виртуальный хост каждого веб-сайта просматривать объем, поступающий с моего Mac. - person Mattijs; 10.01.2017
comment
Хотя я с радостью помогу с изменением образа Lucee, на самом деле это не то, о чем вы спрашивали в этом вопросе. Пожалуйста, составьте новый вопрос с тем, что вы пробовали до сих пор в связи с этим, и если одно из решений этого вопроса ответило на этот вопрос тогда примите это - иначе это станет бесполезным для людей в будущем. - person Simon at My School Portal; 10.01.2017
comment
Я создал новый вопрос: заголовок stackoverflow.com/questions/41646946/ - person Mattijs; 14.01.2017

Если нет необходимости изменять содержимое /code в течение срока службы контейнера, вы можете просто КОПИРОВАТЬ или ДОБАВИТЬ его во время сборки контейнера. если нет, как предложил Саймон выше, имеет смысл смонтировать том непосредственно там, где вы хотите его использовать. сделайте его RO, если вы не хотите, чтобы контейнер что-либо менял в томе.

person Ehud Kaldor    schedule 06.01.2017
comment
Нет реальной необходимости, я сам новичок в использовании докера, поэтому я не совсем уверен, что это возможно. Я просто хочу запустить свой проект с 4 дочерними сайтами, которые находятся в папке, и он может работать непосредственно в /var/www. Мне просто нужно выяснить, как я могу запустить 4 разных веб-сайта на этом сервисе докеров. Может быть, настроить apache или tomcat для их размещения? Раньше я запускал виртуальную машину с Linux на ma mac, на которой были бы mysql и apache, а затем был общий доступ к samba, поэтому я мог редактировать код, запуская его на моем виртуальном образе коробки. Поскольку OSX Sierra я больше не могу подключиться. Отсюда моя попытка докера - person Mattijs; 08.01.2017
comment
это больше похоже на проблему с Apache, а не с Docker. поэтому запуск нескольких «сайтов» на одном сервере называется виртуальными хостами в Apache (если я правильно помню), и если это то, что вы ищете, я бы посоветовал сначала установить Apache на свой компьютер, настроить его без Docker, а затем перемещая его в контейнер. с другой стороны, если вы хотите запустить 4 контейнера, каждый из которых обслуживает один «сайт», необходимо создать контейнерный сервер, а затем запустить его с 4 разными папками содержимого. - person Ehud Kaldor; 10.01.2017