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:

中设置开发配置文件

欢迎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 

在应用程序属性中修复了这个问题。