You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2020/02/28 15:07:31 UTC
[turbine-archetypes] 03/11: Update docu,
fix app Dockerfile/docker-compose, add docker parameter
This is an automated email from the ASF dual-hosted git repository.
gk pushed a commit to branch docker
in repository https://gitbox.apache.org/repos/asf/turbine-archetypes.git
commit 2ea3eb50e310f38a355596adea0c4063a77b1154
Author: Georg Kallidis <ge...@fu-berlin.de>
AuthorDate: Mon Nov 26 16:47:44 2018 +0100
Update docu, fix app Dockerfile/docker-compose, add docker parameter
---
README.md | 11 ++++++
.../META-INF/maven/archetype-metadata.xml | 5 ++-
.../docker-resources/app/Dockerfile | 29 +++++----------
.../docker-resources/docker-compose.yml | 3 +-
.../docker-resources/docker-info.md | 41 ++++++++++++++++------
src/main/resources/archetype-resources/pom.xml | 13 ++++---
.../resources/projects/first/archetype.properties | 1 +
7 files changed, 62 insertions(+), 41 deletions(-)
diff --git a/README.md b/README.md
index d05d8bc..2755d40 100644
--- a/README.md
+++ b/README.md
@@ -8,12 +8,23 @@ These instructions will get you a copy of the project up and running on your loc
### Prerequisites
+#### Host system installation
* Java 8 JDK or later
* [MySQl](https://www.mysql.com/) - Database Server
* [Maven](https://maven.apache.org/) - Dependency Management
You should have Java 8 or later installed. The archetype sets up a new application using MySQL as the default database store. However, you can adjust this to use any database supported by Apache Torque 4.0. Therefore, you should be at least have a database instance where you have access rights to create a new database schema and populate it with the tables the application generates. Finally, this is a maven archetype, so of course you should install a local version of Maven (tested wi [...]
+#### Docker (alpha/experimental)
+
+Use docker to rapidly start development without Mysql installing on your local machine. It requires Java 8 and Maven in the hosting system (see above) and additionally
+
+* Docker version > 17 (Docker-Desktopm Windows)
+
+To install the Docker Archetype into the local repository, run
+
+* Run mvn clean install -Pdocker
+
### Installing
diff --git a/src/main/resources/META-INF/maven/archetype-metadata.xml b/src/main/resources/META-INF/maven/archetype-metadata.xml
index 5b4c2dd..773abed 100644
--- a/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -54,9 +54,12 @@
<requiredProperty key="turbine_database_password">
<defaultValue>db_password</defaultValue>
</requiredProperty>
- <requiredProperty key="app_volume_local_repo">
+ <requiredProperty key="app_volume_local_repo">
<defaultValue>${settings.localRepository}</defaultValue>
</requiredProperty>
+ <requiredProperty key="docker">
+ <defaultValue>false</defaultValue>
+ </requiredProperty>
</requiredProperties>
<fileSets>
<fileSet filtered="true" packaged="true">
diff --git a/src/main/resources/archetype-resources/docker-resources/app/Dockerfile b/src/main/resources/archetype-resources/docker-resources/app/Dockerfile
index 14cbcd4..2905c59 100644
--- a/src/main/resources/archetype-resources/docker-resources/app/Dockerfile
+++ b/src/main/resources/archetype-resources/docker-resources/app/Dockerfile
@@ -1,30 +1,17 @@
-FROM maven:3-jdk-8
+FROM maven:3-jdk-8
-ENV APP_ROOT /myapp
+# cft hub.docker.com/r/library/maven
+ADD ./docker-resources/app/settings.xml /usr/share/maven/ref/settings.xml
# Set our working directory inside the image
-RUN mkdir /myapp
+ADD pom.xml /myapp/pom.xml
+ADD src/ /myapp/src/
WORKDIR /myapp
-# cft hub.docker.com/r/library/maven
-COPY ./docker-resources/app/settings.xml /usr/share/maven/ref/
-
-COPY pom.xml /myapp/pom.xml
-COPY src/main/torque-schema/ /myapp/src/main/torque-schema/
-COPY src/main/webapp/ /myapp/src/main/webapp/
-
-# builds app and runs commands connecting to mysql port 13306
-# CMD ["mvn clean install"]
-# RUN mvn clean install & sleep 10
-
-# copy generated target et al.
-COPY . /myapp/
-
-RUN sleep 5
+# build app outside docker, if you use snapshots
+# RUN mvn -f /myapp/pom.xml clean package
# do this not in build
-# mvn jetty:run
-
-
+# mvn jetty:run
\ No newline at end of file
diff --git a/src/main/resources/archetype-resources/docker-resources/docker-compose.yml b/src/main/resources/archetype-resources/docker-resources/docker-compose.yml
index d5a84e1..65c24ce 100644
--- a/src/main/resources/archetype-resources/docker-resources/docker-compose.yml
+++ b/src/main/resources/archetype-resources/docker-resources/docker-compose.yml
@@ -9,8 +9,7 @@ services:
dockerfile: ./docker-resources/app/Dockerfile
# optional environment variable configuration for app
# this runs the app server in the container
- #command: mvn package jetty:run -Pdocker
- command: mvn jetty:run
+ command: mvn clean package jetty:run -Pdocker
ports:
- "8081:8081"
- "8080:8080"
diff --git a/src/main/resources/archetype-resources/docker-resources/docker-info.md b/src/main/resources/archetype-resources/docker-resources/docker-info.md
index c1b6239..297455c 100644
--- a/src/main/resources/archetype-resources/docker-resources/docker-info.md
+++ b/src/main/resources/archetype-resources/docker-resources/docker-info.md
@@ -14,13 +14,19 @@ Optional Cleanup
```
docker-compose down
docker-compose down -v
-docker system prune
+
docker volume rm $(docker volume ls -qf dangling=true)
+docker system prune
```
Build Services
```
docker-compose build --no-cache --build-arg DB_CONTEXT=./docker-resources/db
+
+ // build only app
+ // docker-compose build --no-cache app
+ // docker-compose build --no-cache --build-arg DB_CONTEXT=./docker-resources/db db
+
```
DB_CONTEXT is set to allow starting the db container standalone (in folder db, e.g. with docker build --tag my-db .) to test it.
@@ -29,29 +35,37 @@ Builds db, populates it with (hard coded data and prepares application.
Start all services
```
docker-compose up
+
+// docker-compose up db
```
Jetty is run and exposes the webapp to http://localhost:80801/app
+#Test Services: App, Database
-#Test Database
-
-## start service
+## Start service
```
-docker-compose up db
-docker-compose run db /bin/sh --build-arg DB_CONTEXT=./docker-resources/db
+docker-compose run --rm db /bin/sh --build-arg DB_CONTEXT=./docker-resources/db
```
-Extract data
+Extract data in db-Service
```
- docker-compose exec db mysql -u root --password=... -e "show databases;" --build-arg DB_CONTEXT=./docker-resources/db
- docker-compose exec db sh -c 'exec mysqldump --all-databases -uroot -p...' --build-arg DB_CONTEXT=./docker-resources/db > dump.sql
// check mysql in service container db
-# mysql -u root -h db -P 3306 -p
+ // # mysql -u root -h db -P 3306 -p
+ // docker-compose exec db mysql -u root --password=... -e "show databases;" --build-arg DB_CONTEXT=./docker-resources/db
+ // docker-compose exec db sh -c 'exec mysqldump --all-databases -uroot -p...' --build-arg DB_CONTEXT=./docker-resources/db > dump.sql
```
+- Service app
+```
+docker-compose up app
+docker-compose run --rm app /bin/sh
+// ls -la /myapp // should list pom.xml ...
+```
# Windows
+## Powershell
+
- Replace backslashes to slashes in docker-compose.yml in localRepository
- check COMPOSE_CONVERT_WINDOWS_PATHS, https://docs.docker.com/compose/reference/envvars/#compose_convert_windows_paths
@@ -66,6 +80,13 @@ Extract data
1. docker rm $(docker ps -a -q)
2. Stop the Docker on your machine & restart it.
+## Windows Subsystem for Linux (WSL)
+
+- Check file permissions of archetype generated files (chmod -R a+rw docker-resources, chmod -R a+rw src .
+
+- https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly
+
+
Resetting / Preparation (optional)
diff --git a/src/main/resources/archetype-resources/pom.xml b/src/main/resources/archetype-resources/pom.xml
index c8aea05..e95882f 100644
--- a/src/main/resources/archetype-resources/pom.xml
+++ b/src/main/resources/archetype-resources/pom.xml
@@ -453,14 +453,13 @@ under the License.
<profile>
<id>docker</id>
<activation>
- <property>
- <name>docker</name>
- </property>
- </activation>
- <properties>
+ <activeByDefault>${docker}</activeByDefault>
+ </activation>
+ <properties>
<turbine_database_url>jdbc:mysql://db:3306/</turbine_database_url>
- <!-- to provide e.g. local snapshot builds -->
- <app_volume_local_repo>#var("settings.localRepository")</app_volume_local_repo>
+ <!-- to provide e.g. local snapshot builds -->
+ <app_volume_local_repo>#var("settings.localRepository")</app_volume_local_repo>
+ <docker>true</docker>
</properties>
</profile>
</profiles>
diff --git a/src/test/resources/projects/first/archetype.properties b/src/test/resources/projects/first/archetype.properties
index 1d7a742..a6065d1 100644
--- a/src/test/resources/projects/first/archetype.properties
+++ b/src/test/resources/projects/first/archetype.properties
@@ -13,3 +13,4 @@ turbine_database_url=${turbine_database_url}
turbine_database_user=db_user
turbine_database_password=db_password
app_volume_local_repo=${app_volume_local_repo}
+docker=${docker}