English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Запуск JavaWeb проекта, созданного в MyEclipse, в контейнере Docker с помощью Dockerfile

Эта статья расскажет, как сделать Docker-образ для Java-web проекта из предыдущей статьи. Автор считает это очень полезным и делится этим с вами, чтобы给大家 сделать пример. Давайте вместе с автором посмотрим.

Принцип работы приложения в контейнере Docker и на физическом сервере одинаков, поэтому шаги для развертывания Java-web проекта в Docker должны быть такими:

  • Поддержка сервера (здесь выбран CentOS7)
  • Установка окружения Java
  • Установка окружения Tomcat
  • Удаление всех файлов (каталогов) из директории webapps/ROOT в корневой директории Tomcat
  • Копирование всех файлов (каталогов) из директории WebRoot вашего разработанного web-проекта в webapps/ROOT Tomcat
  • Запуск сервиса Tomcat

Шаги уже都很 ясны, но для создания Docker-образа还需要 что-то еще: Dockerfile.

Dockerfile - это файл, содержащий особые команды, которые Docker может распознать. После создания файла Dockerfile можно использовать docker build для создания Docker-образа.

Начало создания Docker-образа

  • Создание папки webapp для этого примера
  • Копирование проекта WebRoot в эту папку
  • Создание файла Dockerfile

Структура изображена ниже:

Структура изображения Docker-образа

Создание образа

docker build -t "zsl131/web01" .

Внимание:

docker build: Создание Docker-образа

-t "zsl131/web01": Указание имени образа, здесь указано zsl131/web01; имя образа состоит из двух частей:仓库和名称,zsl131 - это имя репозитория, которое я зарегистрировал и подал заявку на hub.docker.com, а web01 - это имя самого образа

.: Обратите внимание, что перед этим есть пробел, что означает, что в текущей директории ищется файл Dockerfile для создания образа.

Ниже приведен пример Dockerfile для создания Docker-образа, чтобы лучше понять Dockerfile, можно удалить все команды из следующего файла и выполнять по одной строке: docker build -t "zsl131/web01" ., чтобы увидеть различные информации при создании образа с помощью Dockerfile:

# Используйте Centos7 в качестве базового изображения
FROM centos:7
# Если не знаете, как установить JDK, можно использовать следующую команду, затем напрямую запустите: docker build
#RUN yum search java | grep jdk
# Установите подходящую версию JDK
RUN yum install -y java-1.7.0-openjdk.x86_64
# Создайте каталог web в корневой директории
RUN mkdir /web/
# Установите рабочую директорию в /web, после чего можно использовать: RUN pwd, чтобы проверить текущий путь
WORKDIR /web/
# Установите wget для удобства загрузки Tomcat
RUN yum install -y wget
# Загрузите сжатый файл Tomcat
RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-6/v6.0.48/bin/apache-tomcat-6.0.48.tar.gz
# Разархивируйте файлы Tomcat
RUN tar zxvf apache-tomcat-6.0.48.tar.gz
# Установите инструментальную директорию
WORKDIR /web/apache-tomcat-6.0.48/webapps/ROOT/
# Проверьте все файлы (каталоги) в текущем каталоге, и в этот раз будет несколько файлов, предоставленных Tomcat
RUN ls -l
# Удалите все файлы (каталоги) в текущем каталоге
RUN rm -rf *
# Удалите и снова посмотрите список, и в этот раз не будет никаких файлов
RUN ls -l
# Скопируйте все файлы (каталоги) из директории WebRoot в текущий каталог (webapps/ROOT), также можно использовать команду COPY
ADD WebRoot .
# После копирования можно еще раз увидеть список, чтобы проверить, был ли копирование успешным
RUN ls -l
# Установите рабочую директорию в каталог bin Tomcat, чтобы можно было запустить сервис Tomcat
WORKDIR /web/apache-tomcat-6.0.48/bin/
# Объясните Tomcat порт 8080
EXPOSE 8080
# Запустите сервис Tomcat, чтобы он не был перезаписан при запуске docker run
ENTRYPOINT ["./catalina.sh", "run"]

После завершения написания Dockerfile, в конечном итоге нужно скомпилировать изображение с помощью следующих команд:

docker build -t "zsl131/web01" .

Командой docker images можно проверить только что созданный образ.

Запуск контейнера

docker run -d --name web01 -p 80:8080 zsl131/web01

Объяснение:

docker run: команда для запуска контейнера

-d: Рабочий режим

--name web01: Установите имя контейнера как web01

-p 80:8080: Укажите порт, доступный для внешнего доступа, как 80, то есть когда внешний доступ к порту 80 будет маршрутизироваться на порт 8080 внутри контейнера

zsl131/web01: имя образа

Просмотр журнала запуска контейнера

docker logs web01

Объяснение:

docker logs: команда для просмотра журналов контейнера

web01: имя проверяемого контейнера, здесь это web01

Посещение

Откройте браузер и введите: http://192.168.99.100, чтобы получить доступ к Javaweb проекту, созданному MyEclipse.

Внимание: 192.168.99.100 - это IP-адрес моего хоста docker, вы можете проверить это с помощью docker-machine inspect test01, где test01 - это имя хоста docker.

Это все, что есть в этой статье, надеюсь, это поможет вам в изучении, также希望大家多多支持呐喊教程。

Объявление: контент этой статьи взяты из Интернета, авторские права принадлежат их законным владельцам, контент был предложен пользователями Интернета и загружен самостоятельно, сайт не обладает правами собственности, не underwent ручную редактуру и не несет ответственности за соответствующие юридические обязательства. Если вы обнаружите подозрительный контент на нарушение авторских прав, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для отчета и предоставьте соответствующие доказательства. Если证实, сайт немедленно удалят涉嫌侵权的内容。

Рекомендуется к просмотру