Docker запустить несколько изображений с одним Dockerfile? - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь протестировать и использовать докер для своей среды.Вот мой Dockerfile. Когда я захожу на tomcat (http://localhost:8080), у меня возникает проблема This site can’t be reached.

Примечание => Для окна я использую http://192.168.99.100:8080/.

Build

docker build -f Dockerfile -t docker-spring-rest .

Выполнить

docker run -p 8080:8080 -p 3306:3306 docker-spring-rest   

Dockerfile

#Prat-1 tomcat
FROM tomcat:8.5.35
COPY ./target/spring-rest.war /usr/local/tomcat/webapps/
EXPOSE 8080

#Prat-1 tomcat
FROM mysql:5.5
ENV MYSQL_ROOT_PASSWORD root
ENV MYSQL_DATABASE spring-rest
COPY ./DB.SQL /docker-entrypoint-initdb.d/

Одна странная вещь: если я настрою только Part-1 tomcat без mysql, я могу получить доступ http://192.168.99.100:8080/или мое приложение http://192.168.99.100:8080/spring-rest В моем файле отсутствуют какие-либо данные?

Googling => Я проверил эту ссылку tomcat-mysql .Почему они используют apt-get для установки, потому что в Docker уже есть несколько образов?Могу ли я использовать несколько FROM как FROM tomcat, FROM mysql, FROM xxx в одном Dockerfile?

1 Ответ

0 голосов
/ 07 декабря 2018

Ключевой вопрос здесь: «Могу ли я использовать несколько FROM ... в одном Dockerfile».

Если вы сделаете это, вы используете новую функцию докера, называемую multistage-построить .Эта функция позволяет создавать изображение в несколько этапов, где каждый FROM начинается со свежего базового слоя, отбрасывая все, что вы делали до .

Это не то, что вы намерены делатьпотому что когда вы делаете FROM mysql:5.5, вы теряете всю часть tomcat выше этой строки.

Вы можете создать образ docker, содержащий инструкции tomcat и mysql (используя только одну FROM), но я бы посоветовал не делать этого.Это. Образы Docker должны иметь дело только с одной проблемой .

Таким образом, действительно, лучшим решением будет создание двух образов Docker (2 файла Docker), одного для tomcat, одного для mysql, а затем использованиеdocker-compose для запуска обоих как составных.

...