我们有一个Spring Boot应用程序(多个微服务),与Google Container Builder打包并发布到注册表。我们的<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/ui-darkness/jquery-ui.min.css" rel="stylesheet">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
</head>
<body>
<div class="vfInfoIcon" style="border: 1px solid #000" "data-info="someInfo">1. click inside this DIV for dialog
<img src="https://www.gravatar.com/avatar/7b118e7ce745b1e84911c890f1179eb0?s=48&d=identicon&r=PG&f=1" alt="" height="24" width="24">
<div class="infoText" data-info="someInfo" data-title="TITLE_0"></div>
</div>
<div class="vfInfoIcon" style="border: 1px solid #000" data-info="someInfo">2. click inside this DIV for dialog
<img src="https://www.gravatar.com/avatar/7b118e7ce745b1e84911c890f1179eb0?s=48&d=identicon&r=PG&f=1" alt="" height="24" width="24">
<div class="infoText" data-info="someInfo" data-title="TITLE_1"></div>
</div>
<script type="text/javascript">
function bindInfoIconClick(obj, opt) {
obj.off().on("click",function(e) {
e.stopPropagation();
e.preventDefault();
var infoText = obj.data('info');
var dialog = obj.children('div');
opt.title = dialog.data('title');
$("#dialog").dialog(opt).dialog('open');
});
}
var opt = {
draggable: false,
modal: true,
width: 600,
resizable: false,
autoOpen: false
};
$('.vfInfoIcon').each(function() {
bindInfoIconClick($(this), opt);
});
</script>
<div id="dialog" title="Dialog">
<p>Some text. Blahh blahh...</p>
</div>
<input type="button" id="button" value="Click to open the dialog">
<script>
$(function() {
$("#dialog").dialog({
autoOpen: false
});
$("#button").on("click", function() {
$("#dialog").dialog("open");
});
});
</script>
</body>
</html>
看起来像这样:
cloudbuild.yaml
在推送到GitHub上的存储库时由触发器调用。
如果我在本地运行:
steps:
- name: 'gcr.io/cloud-builders/java/gradle'
id: 'java-build'
args: ['build']
- name: 'gcr.io/cloud-builders/docker'
args: ['build',
'-t', 'gcr.io/$PROJECT_ID/api-auth:$COMMIT_SHA',
'-t', 'gcr.io/$PROJECT_ID/api-auth:latest',
'-f', './api-auth/Dockerfile', './api-auth']
waitFor: ['java-build']
- name: 'gcr.io/cloud-builders/docker'
args: ['build',
'-t', 'gcr.io/$PROJECT_ID/api-user:$COMMIT_SHA',
'-t', 'gcr.io/$PROJECT_ID/api-user:latest',
'-f', './api-user/Dockerfile', './api-user']
waitFor: ['java-build']
images:
- 'gcr.io/$PROJECT_ID/api-auth:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/api-auth:latest'
- 'gcr.io/$PROJECT_ID/api-user:$COMMIT_SHA'
- 'gcr.io/$PROJECT_ID/api-user:latest'
结果图像运行良好,例如:
container-builder-local --dryrun=false .
但是当使用Container Builder在云中构建映像时,应用程序无法正常工作并因以前从未发生过的错误而失败。
即使被拉了:
docker run -e "SPRING_PROFILES_ACTIVE=development" -p 9000:9000 gcr.io/.../api-auth:latest
并在本地运行新错误会阻止应用程序加载:
gcloud docker -- pull gcr.io/.../api-auth:latest
这仅在图像通过Cloud Container Builder时发生 - 既不是本地构建器,也不是本地gradle构建。
这可能是云中的问题,还是我错过了一些微不足道的事情?
我还提交了一个issue on GitHub,但由于它是一个更广泛的问题以及应用程序的Spring Boot特性,我想我会问这里是否响铃。