Я читал о Docker и о том, как использовать его для запуска приложения Spring.Я читал, что в случае с Docker мы используем механизм Docker (вместо гостевой ОС), который является очень тонким слоем ОС, и контейнер может связываться с хост-ОС, чтобы получить доступ к функциональности ядра.И это позволяет нам иметь очень легкий контейнер.
Этот вид имеет смысл.
Я бы хотел иметь очень простую настройку и использовать Docker для разрабатываемого приложения Spring Boot
и MySQL
.Приложение работает само по себе (без Docker).Предоставлена структура проекта,
![enter image description here](https://i.stack.imgur.com/S4GIN.png)
Сначала я запускаю $ mvn clean package
. Это создает Appointment-0.0.1-SNAPSHOT.jar
в /target
каталог.
![enter image description here](https://i.stack.imgur.com/5Vojk.png)
Я определяю Dockerfile после прочтения учебника,
FROM java:8
VOLUME /tmp
ADD /target/Appointment-0.0.1-SNAPSHOT.jar Appointment.jar
RUN bash -c 'touch /Appointment.jar'
ENTRYPOINT ["java","-jar","/Appointment.jar"]
Мой docker-compose.yaml
файл, представленный ниже,
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
appointment-mysql:
container_name: appointment-mysql
image: mysql/mysql-server:5.7
environment:
MYSQL_DATABASE: Appointment
MYSQL_ROOT_PASSWORD: testpassword
MYSQL_ROOT_HOST: '%'
ports:
- "3307:3307"
restart: always
volumes:
logvolume01: {}
Я намеренно изменяю порт для MySQL на 3307. Наконец, я запускаю команду,
$ docker-compose up -d
Я получаю сообщение о выходе,
appointment-mysql is up-to-date
Starting appointmentmanager_web_1 ... done
Iувидеть ничего не произойдет после.Кто-нибудь может дать четкую инструкцию о том, как мне запустить загрузочное приложение Spring с Docker и docker-compose?
Ясно, что я не получаю никаких сообщений об ошибках, но, как правило, когда я запускаю приложение,метод вызывается и загружает кучу данных в базу данных.
public static void main(String[] args) {
SpringApplication.run(AppointmentApplication.class, args);
loadAppointmentsData();
}
и я могу использовать cURL
для выполнения различных запросов для приложения.Кажется, чего-то не хватает.Я знаю, что уже поздно изучать и использовать Docker, и я очень ценю, если кто-то поможет мне начать использовать Docker с приложением Spring Boot.
ОБНОВЛЕНИЕ
Iпопробуйте команду docker-compose up
(без -d), и, похоже, у меня мало ошибок,
$ docker-compose up
appointment-mysql is up-to-date
Starting appointmentmanager_web_1 ... done
Attaching to appointment-mysql, appointmentmanager_web_1
appointment-mysql | [Entrypoint] MySQL Docker Image 5.7.25-1.1.10
appointment-mysql | [Entrypoint] Starting MySQL 5.7.25-1.1.10
appointment-mysql | [Entrypoint] MySQL Docker Image 5.7.25-1.1.10
appointment-mysql | [Entrypoint] Starting MySQL 5.7.25-1.1.10
appointment-mysql | [Entrypoint] MySQL Docker Image 5.7.25-1.1.10
appointment-mysql | [Entrypoint] Starting MySQL 5.7.25-1.1.10
web_1 | [INFO] Scanning for projects...
web_1 | [INFO] ------------------------------------------------------------------------
web_1 | [INFO] BUILD FAILURE
web_1 | [INFO] ------------------------------------------------------------------------
web_1 | [INFO] Total time: 0.205 s
web_1 | [INFO] Finished at: 2019-02-12T14:33:03Z
web_1 | [INFO] ------------------------------------------------------------------------
web_1 | [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
web_1 | [ERROR]
web_1 | [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
web_1 | [ERROR] Re-run Maven using the -X switch to enable full debug logging.
web_1 | [ERROR]
web_1 | [ERROR] For more information about the errors and possible solutions, please read the following articles:
web_1 | [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException
appointmentmanager_web_1 exited with code 1
Я предположил, что это связано с конфигурацией файла pom.xml
, поэтому я также указал это ниже.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.appoint.manager</groupId>
<artifactId>Appointment</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Appointment</name>
<description>A project for Appointment Management</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.javafaker/javafaker -->
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>0.17.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.jayway.jsonpath/json-path -->
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.assertj/assertj-core -->
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.11.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.24.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.4.RELEASE</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-library -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-library -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>2.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
<!--<sourceDirectory>src</sourceDirectory>-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Итак, подумайте, что ошибка в основном описана ниже, и это No goals have been specified
No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy.