提交 daad1c0a 编写于 作者: ibizdev's avatar ibizdev

xignzi006 部署微服务应用

上级 2b047ed1
.app-form-group { .app-form-group {
>.ivu-card-head { >.ivu-card-head {
>p { >p {
>i { >i {
...@@ -7,9 +8,12 @@ ...@@ -7,9 +8,12 @@
} }
} }
} }
>.ivu-card-extra { >.ivu-card-extra {
.item-extract-mode { .item-extract-mode {
display: flex; display: flex;
.item { .item {
margin-left: 12px; margin-left: 12px;
} }
...@@ -18,6 +22,7 @@ ...@@ -18,6 +22,7 @@
} }
.app-form-group.app-group-collapse-contant { .app-form-group.app-group-collapse-contant {
.ivu-card-body { .ivu-card-body {
display: none; display: none;
} }
...@@ -25,9 +30,12 @@ ...@@ -25,9 +30,12 @@
.app-group-flex { .app-group-flex {
height: 100%; height: 100%;
overflow: auto; overflow-y: auto;
> .ivu-card-body { overflow-x: hidden;
>.ivu-card-body {
height: calc(100% - 51px); height: calc(100% - 51px);
overflow: auto; overflow-y: auto;
overflow-x: hidden;
} }
} }
\ No newline at end of file
<template> <template>
<div class="app-form-group"> <div :class="classes">
<div v-if="uiStyle=='STYLE2'"> <template v-if="uiStyle=='STYLE2'">
<app-form-group2 <app-form-group2
:caption="caption" :caption="caption"
:uiStyle="uiStyle" :uiStyle="uiStyle"
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
:titleBarCloseMode="titleBarCloseMode"> :titleBarCloseMode="titleBarCloseMode">
<slot></slot> <slot></slot>
</app-form-group2> </app-form-group2>
</div> </template>
<div v-else> <template v-else>
<card v-if="isShowCaption === true" :bordered="false" :dis-hover="true" :class="classes"> <card v-if="isShowCaption === true" :bordered="false" :dis-hover="true" :class="classes">
<p class='' slot='title'> <p class='' slot='title'>
<icon v-if="titleBarCloseMode !== 0" :type="collapseContant ? 'ios-arrow-dropright-circle' : 'ios-arrow-dropdown-circle'" <icon v-if="titleBarCloseMode !== 0" :type="collapseContant ? 'ios-arrow-dropright-circle' : 'ios-arrow-dropdown-circle'"
...@@ -87,17 +87,17 @@ ...@@ -87,17 +87,17 @@
</template> </template>
</a > </a >
</template> </template>
<div v-if="Object.is(layoutType, 'FLEX')"> <template v-if="Object.is(layoutType, 'FLEX')">
<slot></slot> <slot></slot>
</div> </template>
<div v-if="!Object.is(layoutType, 'FLEX')"> <template v-if="!Object.is(layoutType, 'FLEX')">
<row :gutter="10"><slot></slot></row> <row :gutter="10"><slot></slot></row>
</div> </template>
</card> </card>
<row v-if="isShowCaption === false" :class="classes"> <template v-if="isShowCaption === false">
<slot></slot> <slot></slot>
</row> </template>
</div> </template>
</div> </div>
</template> </template>
......
.app-form-item-wrapper {
height: 100%;
}
.app-form-item { .app-form-item {
height: 100%;
>.ivu-form-item-label { >.ivu-form-item-label {
text-decoration: none; text-decoration: none;
...@@ -8,45 +13,58 @@ ...@@ -8,45 +13,58 @@
} }
>.ivu-form-item-content { >.ivu-form-item-content {
height: 100%;
min-height: 36px; min-height: 36px;
>.editor {
height: 100%;
}
} }
} }
.app-form-item-label-top { .app-form-item.label-top, .app-form-item.label-bottom {
>.ivu-form-item-label { .app-form-item-label {
float: none; height: 16px;
display: inline-block; }
padding: 0 0 10px;
.editor {
height: calc(100% - 16px);
} }
} }
.app-form-item-label-left { .app-form-item.label-left, .app-form-item.label-right {
.app-form-item-label, .editor {
height: 100%;
}
}
.app-form-item.label-left {
.app-form-item-label { .app-form-item-label {
float: left; float: left;
text-align: right; text-align: right;
padding-right: 12px; padding-right: 10px;
} }
} }
.app-form-item-label-right { .app-form-item.label-right {
.app-form-item-label { .app-form-item-label {
float: right; float: right;
text-align: left; text-align: left;
padding-left: 12px; padding-left: 10px;
} }
} }
.app-form-item-label-top { .app-form-item.label-none {
.app-form-item-label { .app-form-item-label {
display: block; display: none !important;
padding-bottom: 10px;
} }
}
.app-form-item-label-bottom { .editor {
.app-form-item-label { height: 100%;
display: block;
padding-top: 10px;
} }
} }
\ No newline at end of file
<template> <template>
<form-item <div class="app-form-item-wrapper">
:prop="name" <template v-if="this.uiStyle === 'STYLE2'">
:error="error" <app-form-item2
:required="required" :caption="caption"
:rules="rules" :labelStyle="labelStyle"
:class="classes" :error="error"
> :labelPos="labelPos"
<div v-if="Object.is(this.labelPos,'BOTTOM') || Object.is(this.labelPos,'NONE') || !this.labelPos" class="slot-editor" :style="slotstyle"> :labelWidth="labelWidth"
<slot></slot> :isShowCaption="isShowCaption"
</div> :isEmptyCaption="isEmptyCaption"
<span v-if="!Object.is(this.labelPos,'NONE') && this.isShowCaption && this.labelWidth > 0" :style="labelstyle" :class="labelclasses"> :name="name"
{{this.isEmptyCaption ? '' : this.caption}} :uiStyle="uiStyle"
</span> :itemRules="itemRules">
<div v-if="Object.is(this.labelPos,'TOP') || Object.is(this.labelPos,'LEFT') || Object.is(this.labelPos,'RIGHT')" class="slot-editor" :style="slotstyle"> <slot></slot>
<slot></slot> </app-form-item2>
</div> </template>
</form-item> <template v-if="this.uiStyle !== 'STYLE2'">
<form-item :prop="name" :error="error" :required="required" :rules="rules" :class="classes">
<div
v-if="Object.is(this.labelPos,'BOTTOM') || Object.is(this.labelPos,'NONE') || !this.labelPos"
class="editor"
:style="slotstyle"
>
<slot></slot>
</div>
<span
v-if="!Object.is(this.labelPos,'NONE') && this.isShowCaption && this.labelWidth > 0"
:style="labelstyle"
:class="labelclasses"
>
{{this.isEmptyCaption ? '' : this.caption}}</span>
<div
v-if="Object.is(this.labelPos,'TOP') || Object.is(this.labelPos,'LEFT') || Object.is(this.labelPos,'RIGHT')"
class="editor"
:style="slotstyle"
>
<slot></slot>
</div>
</form-item>
</template>
</div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { Vue, Component, Prop, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Watch } from "vue-property-decorator";
@Component({}) @Component({})
export default class AppFormItem extends Vue { export default class AppFormItem extends Vue {
/**
* 名称
*
* @type {string}
* @memberof AppFormItem
*/
@Prop() public caption!: string;
/** /**
* 名称 * 错误信息
* *
* @type {string} * @type {string}
* @memberof AppFormItem * @memberof AppFormItem
*/ */
@Prop() public caption!: string; @Prop() public error?: string;
/**
* 错误信息
*
* @type {string}
* @memberof AppFormItem
*/
@Prop() public error?: string;
/**
* label样式
*
* @type {string}
* @memberof AppFormItem
*/
@Prop() public labelStyle?: string;
/**
* 标签位置
*
* @type {(string | 'BOTTOM' | 'LEFT' | 'NONE' | 'RIGHT' | 'TOP')}
* @memberof AppFormItem
*/
@Prop() public labelPos?: string | 'BOTTOM' | 'LEFT' | 'NONE' | 'RIGHT' | 'TOP';
/**
* 标签宽度
*
* @type {number}
* @memberof AppFormItem
*/
@Prop({}) public labelWidth!: number;
/**
* 是否显示标题
*
* @type {boolean}
* @memberof AppFormItem
*/
@Prop() public isShowCaption?: boolean;
/**
* 标签是否空白
*
* @type {boolean}
* @memberof AppFormItem
*/
@Prop() public isEmptyCaption?: boolean;
/**
* 表单项名称
*
* @type {string}
* @memberof AppFormItem
*/
@Prop() public name!: string;
/**
* 内置样式
*
* @type {string}
* @memberof AppFormItem
*/
@Prop() public uiStyle?: string;
/**
* 表单项值规则
*
* @type {string}
* @memberof AppFormItem
*/
@Prop() public itemRules!: any;
/**
* 值规则数组
*
* @type {any[]}
* @memberof AppFormItem
*/
public rules: any[] = [];
/**
* 是否必填
*
* @type {boolean}
* @memberof AppFormItem
*/
public required: boolean = false;
/**
* 表单项值规则监控
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppFormItem
*/
@Watch('itemRules',{deep:true})
onItemRulesChange(newVal: any, oldVal: any) {
if (newVal) {
try {
this.rules = [];
const _rules: any[] = newVal;
this.rules = [..._rules];
this.rules.some((rule: any) => {
if (rule.hasOwnProperty('required')) {
this.required = rule.required;
return true;
}
return false;
});
} catch (error) {
}
}
}
/** /**
* 计算样式 * label样式
* *
* @readonly * @type {string}
* @type {string []} * @memberof AppFormItem
* @memberof AppFormItem */
*/ @Prop() public labelStyle?: string;
get classes(): string[] {
let posClass = ''; /**
switch (this.labelPos) { * 标签位置
case 'TOP': *
posClass = 'app-form-item-label-top'; * @type {(string | 'BOTTOM' | 'LEFT' | 'NONE' | 'RIGHT' | 'TOP')}
break; * @memberof AppFormItem
case 'LEFT': */
posClass = 'app-form-item-label-left'; @Prop() public labelPos?:
break; | string
case 'BOTTOM': | "BOTTOM"
posClass = 'app-form-item-label-bottom'; | "LEFT"
break; | "NONE"
case 'RIGHT': | "RIGHT"
posClass = 'app-form-item-label-right'; | "TOP";
break;
case 'NONE': /**
posClass = 'app-form-item-label-none'; * 标签宽度
break; *
} * @type {number}
return [ * @memberof AppFormItem
'app-form-item', */
posClass @Prop({}) public labelWidth!: number;
];
} /**
* 是否显示标题
*
* @type {boolean}
* @memberof AppFormItem
*/
@Prop() public isShowCaption?: boolean;
/**
* 标签是否空白
*
* @type {boolean}
* @memberof AppFormItem
*/
@Prop() public isEmptyCaption?: boolean;
/**
* 表单项名称
*
* @type {string}
* @memberof AppFormItem
*/
@Prop() public name!: string;
/** /**
* label样式 * 内置样式
* *
* @readonly * @type {string}
* @type {string} * @memberof AppFormItem
* @memberof AppFormItem */
*/ @Prop() public uiStyle?: string;
get labelclasses():string{
return this.labelStyle?this.labelStyle+' app-form-item-label':'app-form-item-label'; /**
* 表单项值规则
*
* @type {string}
* @memberof AppFormItem
*/
@Prop() public itemRules!: any;
/**
* 值规则数组
*
* @type {any[]}
* @memberof AppFormItem
*/
public rules: any[] = [];
/**
* 是否必填
*
* @type {boolean}
* @memberof AppFormItem
*/
public required: boolean = false;
/**
* 表单项值规则监控
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppFormItem
*/
@Watch("itemRules", { deep: true })
onItemRulesChange(newVal: any, oldVal: any) {
if (newVal) {
try {
this.rules = [];
const _rules: any[] = newVal;
this.rules = [..._rules];
this.rules.some((rule: any) => {
if (rule.hasOwnProperty("required")) {
this.required = rule.required;
return true;
}
return false;
});
} catch (error) {}
} }
}
/** /**
* label行内样式 * 计算样式
* *
* @readonly * @readonly
* @type {string} * @type {string []}
* @memberof AppFormItem * @memberof AppFormItem
*/ */
get labelstyle():any{ get classes(): string[] {
return {width:this.labelWidth+'px'}; let posClass = "";
switch (this.labelPos) {
case "TOP":
posClass = "label-top";
break;
case "LEFT":
posClass = "label-left";
break;
case "BOTTOM":
posClass = "label-bottom";
break;
case "RIGHT":
posClass = "label-right";
break;
case "NONE":
posClass = "label-none";
break;
} }
return [ "app-form-item", posClass ];
}
/**
* label样式
*
* @readonly
* @type {string}
* @memberof AppFormItem
*/
get labelclasses(): string {
return this.labelStyle
? this.labelStyle + " app-form-item-label"
: "app-form-item-label";
}
/** /**
* slot行内样式 * label行内样式
* *
* @readonly * @readonly
* @type {string} * @type {string}
* @memberof AppFormItem * @memberof AppFormItem
*/ */
get slotstyle():any{ get labelstyle(): any {
if(Object.is(this.labelPos,'LEFT')){ if (Object.is(this.labelPos, 'LEFT') || Object.is(this.labelPos, 'RIGHT')) {
return {marginLeft:this.labelWidth+'px'}; return { width: this.labelWidth + "px" };
}else if(Object.is(this.labelPos,'RIGHT')){
return {marginRight:this.labelWidth+'px'};
}
} }
}
/** /**
* vue 生命周期 * slot行内样式
* *
* @memberof AppFormItem * @readonly
*/ * @type {string}
public mounted() { * @memberof AppFormItem
if (this.itemRules) { */
try { get slotstyle(): any {
const _rules: any[] = this.itemRules; if (Object.is(this.labelPos, "LEFT")) {
this.rules = [..._rules]; return { marginLeft: this.labelWidth + "px" };
this.rules.some((rule: any) => { } else if (Object.is(this.labelPos, "RIGHT")) {
if (rule.hasOwnProperty('required')) { return { marginRight: this.labelWidth + "px" };
this.required = rule.required;
return true;
}
return false;
});
} catch (error) {
}
}
} }
}
/**
* vue 生命周期
*
* @memberof AppFormItem
*/
public mounted() {
if (this.itemRules) {
try {
const _rules: any[] = this.itemRules;
this.rules = [..._rules];
this.rules.some((rule: any) => {
if (rule.hasOwnProperty("required")) {
this.required = rule.required;
return true;
}
return false;
});
} catch (error) {}
}
}
} }
</script> </script>
<style lang='less'> <style lang='less'>
@import './app-form-item.less'; @import "./app-form-item.less";
</style> </style>
\ No newline at end of file
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
class="login_reset">重置 class="login_reset">重置
</i-button> </i-button>
</form-item> </form-item>
<!--
<form-item> <form-item>
<div style="text-align: center"> <div style="text-align: center">
<span class="form_tipinfo">其他登录方式</span> <span class="form_tipinfo">其他登录方式</span>
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<img src="/assets/img/weixin.svg" class="wx-svg-container" draggable="false"> <img src="/assets/img/weixin.svg" class="wx-svg-container" draggable="false">
</div> </div>
</div> </div>
</form-item> </form-item> -->
</i-form> </i-form>
<p class='login-tip'> <p class='login-tip'>
...@@ -87,7 +87,7 @@ export default class Login extends Vue { ...@@ -87,7 +87,7 @@ export default class Login extends Vue {
* @type {*} * @type {*}
* @memberof Login * @memberof Login
*/ */
public form: any = {loginname: 'guest', password: 'guest'}; public form: any = {loginname: 'pms_guest', password: 'guest@123'};
/** /**
* 登录提示语 * 登录提示语
...@@ -166,6 +166,9 @@ export default class Login extends Vue { ...@@ -166,6 +166,9 @@ export default class Login extends Vue {
* @memberof Login * @memberof Login
*/ */
public handleSubmit(): void { public handleSubmit(): void {
let leftTime = new Date();
leftTime.setTime(leftTime.getSeconds() - 1000);
document.cookie = "ibzuaa-token=;expires=" + leftTime.toUTCString();
const form: any = this.$refs.loginForm; const form: any = this.$refs.loginForm;
let validatestate: boolean = true; let validatestate: boolean = true;
form.validate((valid: boolean) => { form.validate((valid: boolean) => {
...@@ -219,7 +222,7 @@ export default class Login extends Vue { ...@@ -219,7 +222,7 @@ export default class Login extends Vue {
*/ */
public goReset(): void { public goReset(): void {
const _this = this; const _this = this;
_this.form={loginname: 'guest', password: 'guest'} _this.form={loginname: 'pms_guest', password: 'guest@123'}
} }
/** /**
......
...@@ -253,6 +253,7 @@ export default class EditViewEngine extends ViewEngine { ...@@ -253,6 +253,7 @@ export default class EditViewEngine extends ViewEngine {
this.view.$route.meta.info = info; this.view.$route.meta.info = info;
} }
this.view.model.srfTitle = `${this.view.$t(viewdata.srfTitle)} - ${viewdata.dataInfo}`; this.view.model.srfTitle = `${this.view.$t(viewdata.srfTitle)} - ${viewdata.dataInfo}`;
this.view.$emit('viewModelChange', this.view.model.srfTitle);
} }
} }
......
<template> <template>
<div class="html-container" v-html="content"></div> <div class="html-container" v-html="rHtml"></div>
</template> </template>
<script lang="tsx"> <script lang="tsx">
import { Vue, Component, Prop, Watch } from 'vue-property-decorator'; import { Vue, Component, Prop, Watch } from 'vue-property-decorator';
import { Environment } from '../../../environments/environment';
/** /**
* 操作历史记录 * 操作历史记录
...@@ -14,14 +15,34 @@ import { Vue, Component, Prop, Watch } from 'vue-property-decorator'; ...@@ -14,14 +15,34 @@ import { Vue, Component, Prop, Watch } from 'vue-property-decorator';
@Component({}) @Component({})
export default class HtmlContainer extends Vue { export default class HtmlContainer extends Vue {
/**
* 替换后html内容
*
* @type string
* @memberof HtmlContainer
*/
protected rHtml: string = '';
/** /**
* 呈现的Html内容 * 呈现的Html内容
* *
* @type string * @type string
* @memberof HtmlContainer * @memberof HtmlContainer
*/ */
@Prop({ default: '' }) @Prop({ default: `` })
public content!: string; public content!: string;
/**
* 监控html变化
*
* @memberof HtmlContainer
*/
@Watch('content', { immediate: true })
public watchContent(): void {
if (this.content && !Object.is(this.content, '')) {
this.rHtml = this.content.replace(/\{(\d+)\.(bmp|jpg|jpeg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp)\}/g, `${Environment.BaseUrl}${Environment.ExportFile}/$1`);
}
}
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
......
...@@ -44,7 +44,8 @@ export const StudioCore = { ...@@ -44,7 +44,8 @@ export const StudioCore = {
v.component('studio-view', StudioView); v.component('studio-view', StudioView);
v.component('studio-embed-view', StudioEmbedView); v.component('studio-embed-view', StudioEmbedView);
v.component('view-config-actions', ViewConfigActions); v.component('view-config-actions', ViewConfigActions);
v.component('html-container', HtmlContainer);
// 注册指令
v.directive('notification-signal', NotificationSignal); v.directive('notification-signal', NotificationSignal);
v.directive('html-container', HtmlContainer);
} }
}; };
\ No newline at end of file
...@@ -37,11 +37,14 @@ export class UIStateService { ...@@ -37,11 +37,14 @@ export class UIStateService {
const data: any = localStorage.getItem(this.localStoreKey); const data: any = localStorage.getItem(this.localStoreKey);
if (data) { if (data) {
this.fillLayoutState(JSON.parse(data)); this.fillLayoutState(JSON.parse(data));
} else {
this.fillLayoutState({});
} }
} catch (error) { } } catch (error) {
this.fillLayoutState({});
}
let z = this; let z = this;
on(window, 'beforeunload', () => { on(window, 'beforeunload', () => {
console.log(z.layoutState)
localStorage.setItem(this.localStoreKey, JSON.stringify(this.layoutState)); localStorage.setItem(this.localStoreKey, JSON.stringify(this.layoutState));
}); });
} }
......
...@@ -219,6 +219,9 @@ export class StudioDrawer extends Vue { ...@@ -219,6 +219,9 @@ export class StudioDrawer extends Vue {
{this.showViewList.map((item, i) => { {this.showViewList.map((item, i) => {
const ref: any = this.$refs[item.viewname + i]; const ref: any = this.$refs[item.viewname + i];
if (!ref) { if (!ref) {
setTimeout(() => {
this.$forceUpdate();
}, 300);
return; return;
} }
return <span key={i}> return <span key={i}>
......
import Vue from 'vue'; import Vue from 'vue';
import { StudioCore } from './studio-core'; import { StudioCore } from './studio-core';
import IBizStudioComponentsVue from 'ibiz-studio-components-vue';
import AppVuePivotTable from './components/app-vue-pivottable/app-vue-pivottable.vue';
// 注册Vue插件 // 注册Vue插件
export const UserDefaultComponent = { export const UserDefaultComponent = {
install(v: any, opt: any) { install(v: any, opt: any) {
Vue.use(StudioCore); Vue.use(StudioCore);
Vue.use(IBizStudioComponentsVue);
v.component('app-vue-pivottable', AppVuePivotTable);
} }
}; };
\ No newline at end of file
import Vue from 'vue'; import Vue from 'vue';
import IBizStudioComponentsVue from 'ibiz-studio-components-vue';
import { UserDefaultComponent } from './user-default-register'; import { UserDefaultComponent } from './user-default-register';
import AppVuePivotTable from './components/app-vue-pivottable/app-vue-pivottable.vue';
// 注册Vue插件 // 注册Vue插件
export const UserComponent = { export const UserComponent = {
install(v: any, opt: any) { install(v: any, opt: any) {
Vue.use(UserDefaultComponent); Vue.use(UserDefaultComponent);
Vue.use(IBizStudioComponentsVue);
v.component('app-vue-pivottable', AppVuePivotTable);
} }
}; };
\ No newline at end of file
...@@ -82,7 +82,7 @@ export class ViewTool { ...@@ -82,7 +82,7 @@ export class ViewTool {
if (param && !Object.is(param, '')) { if (param && !Object.is(param, '')) {
return `/${_pathName}/${param}`; return `/${_pathName}/${param}`;
} }
return `/${_pathName}/null`; return `/${_pathName}`;
} }
/** /**
...@@ -100,13 +100,13 @@ export class ViewTool { ...@@ -100,13 +100,13 @@ export class ViewTool {
let [arg] = args; let [arg] = args;
arg = arg ? arg : {}; arg = arg ? arg : {};
deResParameters.forEach(({ pathName, parameterName }: { pathName: string, parameterName: string }) => { deResParameters.forEach(({ pathName, parameterName }: { pathName: string, parameterName: string }) => {
let value:any = null; let value: any = null;
if (viewParam[parameterName] && !Object.is(viewParam[parameterName], '') && !Object.is(viewParam[parameterName], 'null')) { if (viewParam[parameterName] && !Object.is(viewParam[parameterName], '') && !Object.is(viewParam[parameterName], 'null')) {
value = viewParam[parameterName]; value = viewParam[parameterName];
} else if (arg[parameterName] && !Object.is(arg[parameterName], '') && !Object.is(arg[parameterName], 'null')) { } else if (arg[parameterName] && !Object.is(arg[parameterName], '') && !Object.is(arg[parameterName], 'null')) {
value = arg[parameterName]; value = arg[parameterName];
} }
routePath = `${routePath}/${pathName}/${value}`; routePath = `${routePath}/${pathName}` + value !== null ? `/${value}` : '';
}); });
return routePath; return routePath;
} }
......
...@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \ ...@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \
sleep ${IBIZ_SLEEP} && \ sleep ${IBIZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /businesscentral-app-businesscentral.jar java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /businesscentral-app-businesscentral.jar
EXPOSE 8080 EXPOSE 10320
ADD businesscentral-app-businesscentral.jar /businesscentral-app-businesscentral.jar ADD businesscentral-app-businesscentral.jar /businesscentral-app-businesscentral.jar
...@@ -3,9 +3,23 @@ services: ...@@ -3,9 +3,23 @@ services:
businesscentral-app-businesscentral: businesscentral-app-businesscentral:
image: registry.cn-shanghai.aliyuncs.com/ibizsys/businesscentral-app-businesscentral:latest image: registry.cn-shanghai.aliyuncs.com/ibizsys/businesscentral-app-businesscentral:latest
ports: ports:
- "8080:8080" - "10320:10320"
networks: networks:
- agent_network - agent_network
environment:
- SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.240.110
- SERVER_PORT=10320
- SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.240.110:8848
- SPRING_REDIS_HOST=172.16.100.243
- SPRING_REDIS_PORT=6379
- SPRING_REDIS_DATABASE=0
- SPRING_DATASOURCE_USERNAME=a_LAB01_e85d8801c
- SPRING_DATASOURCE_PASSWORD=b1@@@772
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.186.185:3306/a_LAB01_e85d8801c?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
- SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver
- SPRING_DATASOURCE_DEFAULTSCHEMA=a_LAB01_e85d8801c
- CAS=https://passport.ibizlab.cn
- NACOS=172.16.240.110:8848
deploy: deploy:
resources: resources:
limits: limits:
......
...@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \ ...@@ -9,6 +9,6 @@ CMD echo "The application will start in ${IBIZ_SLEEP}s..." && \
sleep ${IBIZ_SLEEP} && \ sleep ${IBIZ_SLEEP} && \
java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /businesscentral-provider-centralapi.jar java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /businesscentral-provider-centralapi.jar
EXPOSE 10310 EXPOSE 8081
ADD businesscentral-provider-centralapi.jar /businesscentral-provider-centralapi.jar ADD businesscentral-provider-centralapi.jar /businesscentral-provider-centralapi.jar
...@@ -3,23 +3,9 @@ services: ...@@ -3,23 +3,9 @@ services:
businesscentral-provider-centralapi: businesscentral-provider-centralapi:
image: registry.cn-shanghai.aliyuncs.com/ibizsys/businesscentral-provider-centralapi:latest image: registry.cn-shanghai.aliyuncs.com/ibizsys/businesscentral-provider-centralapi:latest
ports: ports:
- "10310:10310" - "8081:8081"
networks: networks:
- agent_network - agent_network
environment:
- SPRING_CLOUD_NACOS_DISCOVERY_IP=172.16.240.110
- SERVER_PORT=10310
- SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR=172.16.240.110:8848
- SPRING_REDIS_HOST=172.16.100.243
- SPRING_REDIS_PORT=6379
- SPRING_REDIS_DATABASE=0
- SPRING_DATASOURCE_USERNAME=a_LAB01_e85d8801c
- SPRING_DATASOURCE_PASSWORD=b1@@@772
- SPRING_DATASOURCE_URL=jdbc:mysql://172.16.186.185:3306/a_LAB01_e85d8801c?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
- SPRING_DATASOURCE_DRIVER-CLASS-NAME=com.mysql.jdbc.Driver
- SPRING_DATASOURCE_DEFAULTSCHEMA=a_LAB01_e85d8801c
- CAS=https://passport.ibizlab.cn
- NACOS=172.16.240.110:8848
deploy: deploy:
resources: resources:
limits: limits:
......
...@@ -37,11 +37,11 @@ ...@@ -37,11 +37,11 @@
git clone -b master $para2 ibizbusinesscentral/ git clone -b master $para2 ibizbusinesscentral/
export NODE_OPTIONS=--max-old-space-size=4096 export NODE_OPTIONS=--max-old-space-size=4096
cd ibizbusinesscentral/ cd ibizbusinesscentral/
mvn clean package -Pcentralapi mvn clean package -Pbusinesscentral
cd businesscentral-provider/businesscentral-provider-centralapi cd businesscentral-app/businesscentral-app-businesscentral
mvn -Pcentralapi docker:build mvn -Pbusinesscentral docker:build
mvn -Pcentralapi docker:push mvn -Pbusinesscentral docker:push
docker -H $para1 stack deploy --compose-file=src/main/docker/businesscentral-provider-centralapi.yaml iBizEE --with-registry-auth docker -H $para1 stack deploy --compose-file=src/main/docker/businesscentral-app-businesscentral.yaml iBizEE --with-registry-auth
</command> </command>
</hudson.tasks.Shell> </hudson.tasks.Shell>
</builders> </builders>
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册