Играя с примером кода на 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
Спасибо за помощь.