Нет доступа к серверу Apache Docker - PullRequest
0 голосов
/ 28 февраля 2019

в моем образе докера Мне нужно запустить сервер Apache для развертывания моего веб-сайта, сервер Glassfish для развертывания соответствующего бэкенда и MongoDB, к которым подключается бэкэнд.

Мой файл докер выглядит следующим образом:

FROM httpd:2.4
FROM glassfish:latest
FROM mongo:3.6


COPY /backend_war_exploded /usr/local/glassfish4/glassfish/domains/domain1/autodeploy/backend_war_exploded
COPY /backend_war_exploded /usr/local/glassfish4/bin/backend_war_exploded
COPY /dist /usr/local/apache2/htdocs/

После создания образа я запускаю и запускаю его с:

docker run -dit --name application -p 80:80 -p 8080:8080 -p 27017:27017 applicationimg
docker start application 

Когда я пытаюсь получить доступ через http://localhost:80, он выдает код: ERR_EMPTY_RESPONSE.То же самое для серверной части, но я могу получить доступ к mongodb через порт 27017.Когда я комментирую теги FROM в моем dockerfile и запускаю все по отдельности, это просто отлично работает.Кто-нибудь видит ошибку?Заранее спасибо.

ОБНОВЛЕНИЕ Я последовал вашему предложению и создал переписанный файл Docker:

FROM ubuntu:16.04

COPY /dist /var/www/html/
COPY /backend_war_exploded /glassfish4/glassfish/domains/domain1/autodeploy/backend_war_exploded

RUN apt-get update && apt-get install -y apache2

RUN apt-get install -y openjdk-8-jdk
RUN apt-get install -y wget && apt-get install -y unzip
RUN wget http://download.java.net/glassfish/4.1.2/release/glassfish-4.1.2.zip

RUN unzip glassfish-4.1.2.zip

RUN cd /glassfish4/bin/ && ./asadmin start-domain domain1




EXPOSE 80
EXPOSE 8080

Веб-сервер запускается и доступен через localhost:80, но стеклянная рыбазапуск сервера при создании образа, но при запуске образа докера он больше не запускается.Когда я получаю доступ к контейнеру через docker exec, я могу перейти к Glassfish и запустить его вручную.В чем проблема?

1 Ответ

0 голосов
/ 28 февраля 2019

Вы должны зависеть только от FROM и добавлять другие инструменты через RUN шагов.или используйте один образ для каждого приложения и соедините их вместе через сеть Docker или создав docker-compose.yml, что будет проще, вы можете проверить его через здесь .Использование нескольких FROM не означает, что вы будете иметь все 3 в 1.

Для получения дополнительной информации о том, как создать Dockerfile и Как развернуть ваше приложение с несколькими контейнерами, вы можете проверить, что getруководство по от Docker

Чтобы запустить несколько служб в одном контейнере, вам нужно использовать диспетчер служб, такой как Supervisor.Проверьте следующую ссылку для получения более подробной информации: Мультисервисный контейнер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...