jHipster 应用程序可能会崩溃,因为 CloudFoundry 激活了云配置文件
jHipster App crashes propably because CloudFoundry activates cloud profile
我的小型 jhipster 应用程序 "customerapp" 的部署失败,这可能是因为除了配置文件 "dev" 之外,cloud foundry 还设置了配置文件 "cloud"。我在 cloud foundry 中使用多个空间来处理不同的开发阶段:开发、暂存和生产。
我使用了 jhipster 生成器,添加了一些实体客户、地址和联系人。应用程序在本地 运行ning 没有任何问题。
我还使用 gitlab-ci 来构建、测试和部署我的 software。我的 .gitlab-ci.yml 看起来像这样(我删除了一些不需要的部分)。
image: mydockerregistry.xxxxx.de/jutoro/jhipster_test/jhipster-dockerimage
services:
- docker:dind
cache:
key: "$CI_BUILD_REF_NAME"
paths:
- node_modules
- .maven
before_script:
- chmod +x mvnw
- export MAVEN_USER_HOME=`pwd`/.maven
stages:
- build
- package
- deployToCF
mvn-build:
stage: build
only:
- dev
- prod
script:
- npm install
- ./mvnw compile -DskipTests -Dmaven.repo.local=$MAVEN_USER_HOME -
Dspring.profiles.active=dev
mvn-package-dev:
stage: package
only:
- dev
script:
- npm install
- ./mvnw package -Pdev -DskipTests -Dmaven.repo.local=$MAVEN_USER_HOME -Dspring.profiles.active=dev
artifacts:
paths:
- target/*.war
mvn-package-prod:
stage: package
only:
- prod
script:
- npm install
- ./mvnw package -Pprod -DskipTests -Dmaven.repo.local=$MAVEN_USER_HOME -Dspring.profiles.active=prod
artifacts:
paths:
- target/*.war
deployToCloudFoundry-dev:
image: pivotalpa/cf-cli-resource
stage: deployToCF
only:
- dev
cache:
paths:
- bin/
script:
- bash ci/scripts/deployToCloudFoundry.sh
deployToCloudFoundry-prod:
image: pivotalpa/cf-cli-resource
stage: deployToCF
only:
- prod
cache:
paths:
- bin/
script:
- bash ci/scripts/deployToCloudFoundry.sh
DOCKERFILE(也使用 gitlab-ci 构建并添加到我们的 docker 存储库):
# DOCKER-VERSION 1.8.2
FROM openjdk:8
MAINTAINER Robert Zieschang
RUN apt-get install -y curl
# install node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get install -y nodejs python g++ build-essential && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# install yeoman
RUN npm install -g yo
deplpoyToCloudFoundry.shshell脚本:
cf login -a $CF_API_ENDPOINT -u $CF_USER -p $CF_PASS -o "${CF_ORG^^}" -s ${CI_COMMIT_REF_NAME^^}
cf push -n $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME
我的清单文件:
---
applications:
- name: customerapp
memory: 1024M
#buildpack: https://github.com/cloudfoundry/java-buildpack#v3.19.2
path: target/customerapp-0.0.1-SNAPSHOT.war
services:
- postgresql
env:
#SPRING_PROFILES_ACTIVE: dev
#SPRING_PROFILES_DEFAULT: dev
#JAVA_OPTS: -Dspring.profiles.active=dev
管道 运行s 很好,应用程序被打包到 war 文件中并上传到 cloud foundry,但它崩溃了,我认为这是因为 cloud foundry 仍然以某种方式应用profile 'cloud' 并且这会覆盖来自 jhipsters 'dev' profile.
的重要配置
[...]
2019-01-02T19:03:16.05+0100 [APP/PROC/WEB/0] OUT 2019-01-02 18:03:16.055 INFO 8 --- [ main] pertySourceApplicationContextInitializer : 'cloud' property source added
2019-01-02T19:03:16.05+0100 [APP/PROC/WEB/0] OUT 2019-01-02 18:03:16.056 INFO 8 --- [ main] nfigurationApplicationContextInitializer : Reconfiguration enabled
2019-01-02T19:03:16.06+0100 [APP/PROC/WEB/0] OUT 2019-01-02 18:03:16.064 INFO 8 --- [ main] com.jutoro.cco.CustomerappApp : The following profiles are active: cloud,dev,swagger
[...]
这后来导致:
2019-01-02T19:03:29.17+0100 [APP/PROC/WEB/0] OUT 2019-01-02 18:03:29.172 ERROR 8 --- [ main] com.jutoro.cco.CustomerappApp :您的应用程序配置错误!它不应 运行 同时具有 'dev' 和 'cloud' 配置文件。
[...]
在那之后 cloud foundry 停止了应用程序。
2019-01-02T19:04:11.09+0100 [CELL/0] OUT Cell 83899f60-78c9-4323-8d3c-e6255086c8a7 stopping instance 74be1834-b656-4445-506c-bdfa
生成的应用程序-dev.yml和bootstrap.yml只是修改了一些地方:
bootstrap.yml
uri: https://admin:${jhipster.registry.password}@url.tomy.jhipsterregistryapp/config
name: customerapp
profile: dev # profile(s) of the property source
label: config-dev
申请-dev.yml
client:
service-url:
defaultZone: https://admin:${jhipster.registry.password}@url.tomy.jhipsterregistryapp/eureka/
我尝试在 cf:
中设置开发配置文件
- 除了 -Pdev
之外,在 gitlab-ci.yml 中添加了 -Dspring.profiles.active=dev
- 添加了 SPRING_PROFILES_ACTIVE: 清单 env: 部分中的开发
- 添加了 SPRING_PROFILES_DEFAULT: 清单 env: 部分中的开发
- 添加了SPRING_APPLICATION_JSON:{"spring.cloud.dataflow.applicationProperties.stream.spring.profiles.active":"dev"}(如https://github.com/spring-cloud/spring-cloud-dataflow/issues/2317中所述)
- 在清单 env: 部分添加了 JAVA_OPTS: -Dspring.profiles.active=dev(cv env customerapp 显示已设置)
- 使用 cf set-env 和 cf restage
设置 JAVA_OPTS -Dspring.profiles.active=dev
欢迎ci任何帮助。
问候
罗伯特
也许任何 "future" 人都会偶然发现同样的行为。
我能够将我的 jhipster 应用程序部署到 Cloud Foundry。
我不知何故 "fixed" 它,但我不知道进一步的后果。然而
原来 cloud foundry 在通过标准的 health-check-type http 监控我的 jhipster 应用程序时遇到了问题,应该是 "heartbeat"?
所以我决定将监视行为切换为非心跳方式。
只需在您的 manifest.yml 文件中切换 health-check-type 以进行处理。
health-check-type: process
该应用现在 运行。
忘记之前的答案了。事实证明,这是一个数据源问题,导致应用程序无法响应心跳。
取消注释
#hibernate.connection.provider_disables_autocommit: true
在应用程序属性中修复了这个问题。
我的小型 jhipster 应用程序 "customerapp" 的部署失败,这可能是因为除了配置文件 "dev" 之外,cloud foundry 还设置了配置文件 "cloud"。我在 cloud foundry 中使用多个空间来处理不同的开发阶段:开发、暂存和生产。
我使用了 jhipster 生成器,添加了一些实体客户、地址和联系人。应用程序在本地 运行ning 没有任何问题。
我还使用 gitlab-ci 来构建、测试和部署我的 software。我的 .gitlab-ci.yml 看起来像这样(我删除了一些不需要的部分)。
image: mydockerregistry.xxxxx.de/jutoro/jhipster_test/jhipster-dockerimage
services:
- docker:dind
cache:
key: "$CI_BUILD_REF_NAME"
paths:
- node_modules
- .maven
before_script:
- chmod +x mvnw
- export MAVEN_USER_HOME=`pwd`/.maven
stages:
- build
- package
- deployToCF
mvn-build:
stage: build
only:
- dev
- prod
script:
- npm install
- ./mvnw compile -DskipTests -Dmaven.repo.local=$MAVEN_USER_HOME -
Dspring.profiles.active=dev
mvn-package-dev:
stage: package
only:
- dev
script:
- npm install
- ./mvnw package -Pdev -DskipTests -Dmaven.repo.local=$MAVEN_USER_HOME -Dspring.profiles.active=dev
artifacts:
paths:
- target/*.war
mvn-package-prod:
stage: package
only:
- prod
script:
- npm install
- ./mvnw package -Pprod -DskipTests -Dmaven.repo.local=$MAVEN_USER_HOME -Dspring.profiles.active=prod
artifacts:
paths:
- target/*.war
deployToCloudFoundry-dev:
image: pivotalpa/cf-cli-resource
stage: deployToCF
only:
- dev
cache:
paths:
- bin/
script:
- bash ci/scripts/deployToCloudFoundry.sh
deployToCloudFoundry-prod:
image: pivotalpa/cf-cli-resource
stage: deployToCF
only:
- prod
cache:
paths:
- bin/
script:
- bash ci/scripts/deployToCloudFoundry.sh
DOCKERFILE(也使用 gitlab-ci 构建并添加到我们的 docker 存储库):
# DOCKER-VERSION 1.8.2
FROM openjdk:8
MAINTAINER Robert Zieschang
RUN apt-get install -y curl
# install node.js
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get install -y nodejs python g++ build-essential && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# install yeoman
RUN npm install -g yo
deplpoyToCloudFoundry.shshell脚本:
cf login -a $CF_API_ENDPOINT -u $CF_USER -p $CF_PASS -o "${CF_ORG^^}" -s ${CI_COMMIT_REF_NAME^^}
cf push -n $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME
我的清单文件:
---
applications:
- name: customerapp
memory: 1024M
#buildpack: https://github.com/cloudfoundry/java-buildpack#v3.19.2
path: target/customerapp-0.0.1-SNAPSHOT.war
services:
- postgresql
env:
#SPRING_PROFILES_ACTIVE: dev
#SPRING_PROFILES_DEFAULT: dev
#JAVA_OPTS: -Dspring.profiles.active=dev
管道 运行s 很好,应用程序被打包到 war 文件中并上传到 cloud foundry,但它崩溃了,我认为这是因为 cloud foundry 仍然以某种方式应用profile 'cloud' 并且这会覆盖来自 jhipsters 'dev' profile.
的重要配置 [...]
2019-01-02T19:03:16.05+0100 [APP/PROC/WEB/0] OUT 2019-01-02 18:03:16.055 INFO 8 --- [ main] pertySourceApplicationContextInitializer : 'cloud' property source added
2019-01-02T19:03:16.05+0100 [APP/PROC/WEB/0] OUT 2019-01-02 18:03:16.056 INFO 8 --- [ main] nfigurationApplicationContextInitializer : Reconfiguration enabled
2019-01-02T19:03:16.06+0100 [APP/PROC/WEB/0] OUT 2019-01-02 18:03:16.064 INFO 8 --- [ main] com.jutoro.cco.CustomerappApp : The following profiles are active: cloud,dev,swagger
[...]
这后来导致: 2019-01-02T19:03:29.17+0100 [APP/PROC/WEB/0] OUT 2019-01-02 18:03:29.172 ERROR 8 --- [ main] com.jutoro.cco.CustomerappApp :您的应用程序配置错误!它不应 运行 同时具有 'dev' 和 'cloud' 配置文件。 [...]
在那之后 cloud foundry 停止了应用程序。
2019-01-02T19:04:11.09+0100 [CELL/0] OUT Cell 83899f60-78c9-4323-8d3c-e6255086c8a7 stopping instance 74be1834-b656-4445-506c-bdfa
生成的应用程序-dev.yml和bootstrap.yml只是修改了一些地方:
bootstrap.yml
uri: https://admin:${jhipster.registry.password}@url.tomy.jhipsterregistryapp/config
name: customerapp
profile: dev # profile(s) of the property source
label: config-dev
申请-dev.yml
client:
service-url:
defaultZone: https://admin:${jhipster.registry.password}@url.tomy.jhipsterregistryapp/eureka/
我尝试在 cf:
中设置开发配置文件- 除了 -Pdev 之外,在 gitlab-ci.yml 中添加了 -Dspring.profiles.active=dev
- 添加了 SPRING_PROFILES_ACTIVE: 清单 env: 部分中的开发
- 添加了 SPRING_PROFILES_DEFAULT: 清单 env: 部分中的开发
- 添加了SPRING_APPLICATION_JSON:{"spring.cloud.dataflow.applicationProperties.stream.spring.profiles.active":"dev"}(如https://github.com/spring-cloud/spring-cloud-dataflow/issues/2317中所述)
- 在清单 env: 部分添加了 JAVA_OPTS: -Dspring.profiles.active=dev(cv env customerapp 显示已设置)
- 使用 cf set-env 和 cf restage 设置 JAVA_OPTS -Dspring.profiles.active=dev
欢迎ci任何帮助。
问候 罗伯特
也许任何 "future" 人都会偶然发现同样的行为。
我能够将我的 jhipster 应用程序部署到 Cloud Foundry。 我不知何故 "fixed" 它,但我不知道进一步的后果。然而
原来 cloud foundry 在通过标准的 health-check-type http 监控我的 jhipster 应用程序时遇到了问题,应该是 "heartbeat"? 所以我决定将监视行为切换为非心跳方式。 只需在您的 manifest.yml 文件中切换 health-check-type 以进行处理。
health-check-type: process
该应用现在 运行。
忘记之前的答案了。事实证明,这是一个数据源问题,导致应用程序无法响应心跳。 取消注释
#hibernate.connection.provider_disables_autocommit: true
在应用程序属性中修复了这个问题。