Докер Compose не может найти Maven Pom - PullRequest
0 голосов
/ 17 июня 2019

Играя с примером кода на https://github.com/hellokoding/hellokoding-courses/tree/master/docker-examples/dockercompose-springboot-mysql-nginx, Я застрял при попытке запустить docker compose (используя команду docker-compose up). Похоже, что изображения создаются нормально, но внутри образа приложения команда Maven не выполняется, так как файл pom.xml не найден.

C:\Dev\sandbox\hellokoding-courses\docker-examples\dockercompose-springboot-mysql-nginx>docker-compose up --build
Building app
Step 1/1 : FROM adoptopenjdk/maven-openjdk8
 ---> f167b3a06c25
Successfully built f167b3a06c25
Successfully tagged dockercompose-springboot-mysql-nginx_app:latest
Starting my-mysql ... done
Recreating my-app ... done
Recreating my-nginx ... done
Attaching to my-mysql, my-app, my-nginx
my-mysql | [Entrypoint] MySQL Docker Image 5.7.26-1.1.11
my-app   | [INFO] Scanning for projects...
my-app   | [INFO] ------------------------------------------------------------------------
my-app   | [INFO] BUILD FAILURE
my-app   | [INFO] ------------------------------------------------------------------------
my-app   | [INFO] Total time:  0.564 s
my-app   | [INFO] Finished at: 2019-06-17T08:23:53Z
my-app   | [INFO] ------------------------------------------------------------------------
my-app   | [ERROR] The goal you specified requires a project to execute but there is no POM in this directory (/app). Please verify you invoked Maven from the correct directory. -> [Help 1]
my-app   | [ERROR]
my-app   | [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
my-app   | [ERROR] Re-run Maven using the -X switch to enable full debug logging.
my-app   | [ERROR]
my-app   | [ERROR] For more information about the errors and possible solutions, please read the following articles:
my-app   | [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MissingProjectException

У меня нет проблемы, поскольку папка приложения отображается через Том и должна быть доступна для композиции. Я также попытался скопировать папку «app» внутри приложения DockerFile, чтобы она отражалась на изображении (и я убедился, что это происходит с помощью команды docker run -it dockercompose-springboot-mysql-nginx_app sh), но это тоже не помогло.

Ниже приведено содержимое DockerFile в простом приложении SpringBoot:

FROM adoptopenjdk/maven-openjdk8
#Following was added by me, wasn't part of the Github code
COPY . /app

И следующий файл для компоновки:

version: '3'
services:
  nginx:
   container_name: my-nginx
   image: nginx:1.13
   restart: always
   ports:
   - 80:80
   - 443:443
   volumes:
   - ./nginx/conf.d:/etc/nginx/conf.d
   depends_on:
   - app

  mysql:
   container_name: my-mysql
   image: mysql/mysql-server:5.7
   environment:
    MYSQL_DATABASE: test
    MYSQL_ROOT_PASSWORD: hellokoding
    MYSQL_ROOT_HOST: '%'
   ports:
   - "3306:3306"
   restart: always

  app:
    container_name: my-app
    restart: always
    build: ./app
    working_dir: /app
    volumes:
      - ./app:/app
      - ~/.m2:/root/.m2
    expose:
      - "8080"
    command: mvn clean spring-boot:run
    depends_on:
      - mysql

Спасибо за помощь.

1 Ответ

0 голосов
/ 17 июня 2019

Ваш pom.xml находится в каталоге / app.Согласно вашей конфигурации это должно быть.

Вы также можете указать точное местоположение pom.xml, используя опцию -f.

mvn -f /path/to/pom.xml clean spring-boot:run
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...