This is an automated email from the ASF dual-hosted git repository. gk pushed a commit to branch docker5x in repository https://gitbox.apache.org/repos/asf/turbine-archetypes.git
commit f2a9ab97e0018259eeb14096bf612526a1d522ed Author: Georg Kallidis <[email protected]> AuthorDate: Tue Jul 13 16:54:36 2021 +0200 db adjustments, fixes dynamic, skip resource scan, if calling jetty profile, update log4j, add more documentation --- .../archetype-resources/docs/DOCKER-README.md | 26 ++++++- .../resources/archetype-resources/docs/README.md | 26 ++++++- src/main/resources/archetype-resources/pom.xml | 15 +++- .../src/main/docker-resources/docker-compose.yml | 33 ++++---- .../src/test/resources/log4j.properties | 89 ---------------------- .../src/test/resources/log4j.xml | 56 ++++++++++++++ .../resources/projects/first/archetype.properties | 1 + 7 files changed, 131 insertions(+), 115 deletions(-) diff --git a/src/main/resources/archetype-resources/docs/DOCKER-README.md b/src/main/resources/archetype-resources/docs/DOCKER-README.md index 9ccca34..b6be1e2 100644 --- a/src/main/resources/archetype-resources/docs/DOCKER-README.md +++ b/src/main/resources/archetype-resources/docs/DOCKER-README.md @@ -2,6 +2,8 @@ This is to help developers to get fast a running development environment for debugging. +To use it in production you may need to carefully review all configurations and adjust. + This Docker environment is to test/develop a Turbine app using a docker test database. The build should take place outside the docker container. @@ -18,9 +20,16 @@ Docker compose uses currently two services: **app** (maven:3-jdk-8) and **db** ( To run the build with maven do this outside of the container using following mvn command: -``` -mvn install -Pdocker -``` + mvn install -Pdocker + + +- Then check in directory target/docker-resources the file docker-compose.yml e.g. with + + docker compose config + +## Optional Integration Test (not tested) + + mvn integration-test N.B.: This builds the integrationtest project in target/test-classes/projects/first/project/integrationtest with docker enabled configuration. Running the build inside the container is not required and may be problematic, unless you use only public available dependencies. @@ -45,12 +54,14 @@ N.B. You may use the command *docker compose* or *docker-compose*, but will slig - Check database service call in ** target/<projectname>/WEB-INF/jetty-env.xml**. It should reference the service name (db), not localhost - as it is also set in maven docker profile. -- To change velocity templates check webapp in ** src/main/webapp**. ```xml <Set name="url">jdbc:mysql://db:3306/turbine</Set> ``` + +- To change velocity templates check webapp in ** src/main/webapp**. Ohter resources might depend on https://www.eclipse.org/jetty/documentation/jetty-9/index.html#jars-scanned-for-annotations. + ## Cleanup or restart (optional) - Optionally Check system or cleanup, e.g. with docker-compose down, docker-compose down -v or docker sytem prune (removes any container on system). @@ -90,6 +101,8 @@ N.B. You may use the command *docker compose* or *docker-compose*, but will slig - Starting the app service will build the app and start jetty with Maven on port 8081. This command is set as a **command** in the app service in docker compose. +Currently the docker-compose is generated once more, if starting the containers, this will overwrite m2repo and may result in errors. + If not yet done, build on the host with mvn clean install -f ../pom.xml -Pdocker. ### Build Services @@ -97,8 +110,13 @@ If not yet done, build on the host with mvn clean install -f ../pom.xml -Pdocker The app service uses later a volume, which maps to the local maven repository, which you may need/not need. The db service uses mysql-latest (currently 8.x), you may replace it with a fixed release tag. +If previously build, you may want to delete all volumes and containers + + docker-compose down -v + - Build it + ```sh docker-compose build --no-cache ``` diff --git a/src/main/resources/archetype-resources/docs/README.md b/src/main/resources/archetype-resources/docs/README.md index 808c903..01217d3 100644 --- a/src/main/resources/archetype-resources/docs/README.md +++ b/src/main/resources/archetype-resources/docs/README.md @@ -28,7 +28,7 @@ Turbine Version: Turbine 5.1. ### Docker Setup -See DOCKER-README.md +Skip Local Database setup and read later DOCKER-README.md ### Local database Setup @@ -67,6 +67,30 @@ mvn archetype:generate \ -Dgoals=generate-sources,integration-test ``` +#### Docker integration (short intro) + +N.B. Add + + -Dturbine_database_url=jdbc:mysql://db:3306/ \ + -Ddocker=true + +to immediately enable docker setup, when generating the archetype. + +Currently only port 3306 is supported, if you do not want ot change the port seetings for the db container in docker-compose.yml + +You then need not to follow the following chapters, but could immediately go to + + cd <project>/target/docker-resources + +and then follow the instructions in DOCKER-README.md. In short you may do the following: + + docker compose configurable + docker compose build --no-cache + docker compose up + + - Now you can launch your new Turbine application by default [http://localhost:8081/app] + + ### Development You may use diff --git a/src/main/resources/archetype-resources/pom.xml b/src/main/resources/archetype-resources/pom.xml index 100afa5..4a79ce1 100644 --- a/src/main/resources/archetype-resources/pom.xml +++ b/src/main/resources/archetype-resources/pom.xml @@ -401,9 +401,8 @@ under the License. <torque.version>5.1-SNAPSHOT</torque.version> <turbine.core>5.1-SNAPSHOT</turbine.core> <!-- - <torque.version>5.0</torque.version> + <torque.version>5.0</torque.version> <turbine.core>5.0</turbine.core> - <torque.version>5.1-SNAPSHOT</torque.version> <turbine.core>5.1-SNAPSHOT</turbine.core> @@ -438,6 +437,16 @@ under the License. </webApp> </configuration> </plugin> + <!-- aswe call this profile in docker-resources/docker-compose.yml for app, which will replace /m2repo, + we want to avoid a second parsing from inside the container --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>3.2.0</version> + <configuration> + <skip>true</skip> + </configuration> + </plugin> </plugins> </build> </profile> @@ -485,7 +494,7 @@ under the License. </plugins> </build> <properties> - <turbine_database_url>jdbc:mysql://db:3306/</turbine_database_url> + <turbine_database_url>${turbine_database_url}</turbine_database_url> <!-- read from #var("settings.localRepository") to provide e.g. local snapshot builds --> <app_volume_local_repo>${settings.localRepository}</app_volume_local_repo> <docker>true</docker> diff --git a/src/main/resources/archetype-resources/src/main/docker-resources/docker-compose.yml b/src/main/resources/archetype-resources/src/main/docker-resources/docker-compose.yml index 89fb5e8..8d595a7 100644 --- a/src/main/resources/archetype-resources/src/main/docker-resources/docker-compose.yml +++ b/src/main/resources/archetype-resources/src/main/docker-resources/docker-compose.yml @@ -11,8 +11,7 @@ services: environment: - MAVEN_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9000 - # this runs the app server in the container - #command: mvn clean package jetty:run -Pdocker + # this runs the app server in the container, be sure not to filter resources once again! command: mvn -Pjetty ports: - "8081:8081" @@ -39,22 +38,20 @@ services: dockerfile: ./docker-resources/db/Dockerfile args: - DB_CONTEXT=./docker-resources/db - - MYSQL_DATABASE=turbine - #- MYSQL_ROOT_PASSWORD=default - - MYSQL_RANDOM_ROOT_PASSWORD=yes - - MYSQL_USER=db_user - - MYSQL_PASSWORD=db_password - - MYSQL_ONETIME_PASSWORD=false + - MYSQL_DATABASE=${turbine_database_name} + - MYSQL_ROOT_PASSWORD=changeit + - MYSQL_RANDOM_ROOT_PASSWORD= + - MYSQL_USER=${turbine_database_user} + - MYSQL_PASSWORD=${turbine_database_password} environment: - - MYSQL_DATABASE=turbine + - MYSQL_DATABASE=${turbine_database_name} - MYSQL_HOST= - #- MYSQL_ROOT_PASSWORD=default - - MYSQL_RANDOM_ROOT_PASSWORD=yes - - MYSQL_USER=db_user - - MYSQL_PASSWORD=db_password + - MYSQL_ROOT_PASSWORD=changeit + - MYSQL_RANDOM_ROOT_PASSWORD= + - MYSQL_USER=${turbine_database_user} + - MYSQL_PASSWORD=${turbine_database_password} - DB_CONTEXT=./docker-resources/db - - MYSQL_ONETIME_PASSWORD=false #- MYSQL_ALLOW_EMPTY_PASSWORD=yes volumes: @@ -62,8 +59,8 @@ services: - "/db/mysql/conf:/etc/mysql/conf.d" - "./db/mysql/data:/data" # default mysql persistent data - - mysql_log:/mysql/log:rw - - db_data:/var/lib/mysql:rw + - mysql_log_${turbine_database_name}:/mysql/log:rw + - db_data_${turbine_database_name}:/var/lib/mysql:rw restart: always ports: # host: container @@ -75,8 +72,8 @@ services: command: --default-authentication-plugin=mysql_native_password volumes: - db_data: - mysql_log: + db_data_${turbine_database_name}: + mysql_log_${turbine_database_name}: #networks: # db: diff --git a/src/main/resources/archetype-resources/src/test/resources/log4j.properties b/src/main/resources/archetype-resources/src/test/resources/log4j.properties deleted file mode 100644 index 651c914..0000000 --- a/src/main/resources/archetype-resources/src/test/resources/log4j.properties +++ /dev/null @@ -1,89 +0,0 @@ - -# Turbine logging configuration -# -# If we don't know the logging facility, put it into the -# turbine.log -# -log4j.rootLogger = INFO, app, console - - -log4j.logger.${package} = DEBUG, app, console -log4j.additivity.${package} = false - -# -# Avalon log -# -log4j.logger.avalon = DEBUG, app, console -log4j.additivity.avalon = false - - -# -# sql log -# allows TRACE -log4j.logger.org.apache.torque.util = DEBUG, sql, console -log4j.additivity.org.apache.torque.util = false - -# -# Torque log -# allows TRACE -log4j.logger.org.apache.torque = DEBUG, torque -log4j.additivity.org.apache.torque = false - -# turbine log -# allows TRACE -log4j.logger.org.apache.turbine = INFO, turbine -log4j.additivity.org.apache.turbine = false - - -# # -# Logfile definitions -# - -# application.log -log4j.appender.app = org.apache.log4j.RollingFileAppender -log4j.appender.app.file = src/test/logs/application.log -log4j.appender.app.MaxFileSize=5MB -log4j.appender.app.MaxBackupIndex=5 -log4j.appender.app.layout = org.apache.log4j.PatternLayout -log4j.appender.app.layout.conversionPattern = %d [%t] %-5p %c - %m%n -log4j.appender.app.append = true - -# -# sql.log -# -log4j.appender.sql = org.apache.log4j.RollingFileAppender -log4j.appender.sql.file = src/test/logs/sql.log -log4j.appender.sql.MaxFileSize=5MB -log4j.appender.sql.MaxBackupIndex=5 -log4j.appender.sql.layout = org.apache.log4j.PatternLayout -log4j.appender.sql.layout.conversionPattern = %d [%t] %-5p %c - %m%n -log4j.appender.sql.append = true - -# -# console -# -log4j.appender.console = org.apache.log4j.ConsoleAppender -log4j.appender.console.layout = org.apache.log4j.PatternLayout -log4j.appender.console.layout.conversionPattern = %d [%t] %-5p %C{1} - %m%n - -# -# torque.log -# -log4j.appender.torque = org.apache.log4j.RollingFileAppender -log4j.appender.torque.MaxFileSize=5MB -log4j.appender.torque.MaxBackupIndex=5 -log4j.appender.torque.file = src/test/logs/torque.log -log4j.appender.torque.layout = org.apache.log4j.PatternLayout -log4j.appender.torque.layout.conversionPattern = %d [%t] %-5p %c - %m%n -log4j.appender.torque.append = false - -# -# turbine.log -# -log4j.appender.turbine = org.apache.log4j.RollingFileAppender -log4j.appender.turbine.MaxFileSize=5MB -log4j.appender.turbine.MaxBackupIndex=5 -log4j.appender.turbine.file = src/test/logs/turbine.log -log4j.appender.turbine.layout = org.apache.log4j.PatternLayout -log4j.appender.turbine.layout.conversionPattern = %d [%t] %-5p %c - %m%n -log4j.appender.turbine.append = false \ No newline at end of file diff --git a/src/main/resources/archetype-resources/src/test/resources/log4j.xml b/src/main/resources/archetype-resources/src/test/resources/log4j.xml new file mode 100644 index 0000000..4c9e0f0 --- /dev/null +++ b/src/main/resources/archetype-resources/src/test/resources/log4j.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> +<Configuration > + <Appenders> + <Console name="console" target="SYSTEM_OUT"> + <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/> + </Console> + <File name="avalon" fileName="./target/avalon.log"> + <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/> + </File> + <File name="torque" fileName="./target/torque.log"> + <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/> + </File> + <File name="turbine" fileName="./target/turbine.log"> + <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/> + </File> + <File name="velocity" fileName="./target/velocity.log"> + <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/> + </File> + </Appenders> + <Loggers> + <Logger name="avalon" level="info" additivity="false"> + <AppenderRef ref="avalon"/> + </Logger> + <Logger name="org.apache.torque" level="info" additivity="false"> + <AppenderRef ref="torque"/> + </Logger> + <Logger name="scheduler" level="info" additivity="false"> + <AppenderRef ref="scheduler"/> + </Logger> + <Logger name="org.apache.turbine" level="info" additivity="false"> + <AppenderRef ref="turbine"/> + <AppenderRef ref="console"/> + </Logger> + <Root level="info"> + <AppenderRef ref="turbine"/> + </Root> + </Loggers> +</Configuration> \ No newline at end of file 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}
