我的小型jhipster应用程序“ customerapp”的部署失败,这可能是因为Cloud Foundry除了配置文件“ dev”之外还设置了配置文件“ cloud”。我在Cloud Foundry中使用几个空间用于开发的不同阶段:开发,暂存和生产。
我使用了jhipster生成器,添加了一些实体客户,地址和联系人。应用程序在本地运行,没有任何问题。
我还使用gitlab-ci来构建,测试和部署我的软件。我的.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.sh Shell脚本:
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
管道运行良好,该应用程序也打包到war文件中,并且也上传到了Cloud Foundry,但是它崩溃了,我认为这是因为Cloud Foundry仍然以某种方式应用了“ cloud”配置文件,并且覆盖了jhipsters的重要配置'dev'个人资料。
[...]
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错误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
生成的application-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
application-dev.yml
client:
service-url:
defaultZone: https://admin:${jhipster.registry.password}@url.tomy.jhipsterregistryapp/eureka/
我如何尝试在cf中设置开发者资料:
感谢您的帮助。
问候 罗伯特
答案 0 :(得分:1)
请先忘记答案。事实证明,这是一个数据源问题,导致应用程序无法响应心跳。 取消注释
#hibernate.connection.provider_disables_autocommit: true
在应用程序属性中解决此问题。
答案 1 :(得分:0)
也许任何“未来”的人都可能偶然发现相同的行为。
我能够将jhipster应用程序部署到Cloud Foundry。 我以某种方式“修复”了它,但我不知道会有更多后果。
结果证明,Cloud Foundry在通过标准“健康检查”类型的http(应该是“心跳”)监视我的jhipster应用程序时遇到问题? 因此,我决定将监视行为切换为不心跳的方式。 只需将运行状况检查类型切换为在manifest.yml文件中处理即可。
health-check-type: process
该应用程序现在正在运行。