135서버 배포 정리

main
bjkim 8 months ago
parent adac240170
commit 20a1a4f268

@ -1,3 +1,3 @@
NODE_ENV = "development"
VITE_APP_API_SERVER_URL = "http://localhost:8080"
NODE_ENV = "dev"
VITE_APP_API_SERVER_URL = "http://localhost:80"
VITE_ROOT_PATH = ""

@ -0,0 +1,9 @@
FROM nginx:stable-alpine
RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime
COPY default.conf /etc/nginx/conf.d/default.conf
COPY dist/. /usr/share/nginx/html/autoflow
EXPOSE 80
ENTRYPOINT ["nginx", "-g", "daemon off;"]

14
components.d.ts vendored

@ -10,23 +10,15 @@ declare module 'vue' {
export interface GlobalComponents {
AppFooter: typeof import('./src/components/AppFooter.vue')['default']
CompareComponent: typeof import('./src/components/templates/run/executions/CompareComponent.vue')['default']
CompareRunDialog: typeof import('./src/components/atoms/organisms/CompareRunDialog.vue')['default']
copy: typeof import('./src/components/atoms/organisms/DatagroupBaseDoalog copy.vue')['default']
DatagroupBaseDoalog: typeof import('./src/components/atoms/organisms/DatagroupBaseDoalog.vue')['default']
DatasetBaseDoalog: typeof import('./src/components/atoms/organisms/DatasetBaseDoalog.vue')['default']
DeploymentDialog: typeof import('./src/components/atoms/organisms/DeploymentDialog.vue')['default']
DetailComponent: typeof import('./src/components/templates/run/experiment/DetailComponent.vue')['default']
DrawerComponent: typeof import('./src/components/common/DrawerComponent.vue')['default']
ExecutionBaseDialog: typeof import('./src/components/atoms/organisms/ExecutionBaseDialog.vue')['default']
ExecutionsViewComponent: typeof import('./src/components/templates/run/executions/ExecutionsViewComponent.vue')['default']
ExperimentCreateDialog: typeof import('./src/components/atoms/organisms/ExperimentCreateDialog.vue')['default']
ExperimentViewComponent: typeof import('./src/components/templates/run/experiment/ExperimentViewComponent.vue')['default']
ExternalDatasetDialog: typeof import('./src/components/atoms/organisms/ExternalDatasetDialog.vue')['default']
HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
IconArrowDown: typeof import('./src/components/atoms/button/IconArrowDown.vue')['default']
IconArrowUp: typeof import('./src/components/atoms/button/IconArrowUp.vue')['default']
IconDeleteBtn: typeof import('./src/components/atoms/button/IconDeleteBtn.vue')['default']
IconDeployBtn: typeof import('./src/components/atoms/button/IconDeployBtn.vue')['default']
IconDeployment: typeof import('./src/components/atoms/button/IconDeployment.vue')['default']
IconDownloadBtn: typeof import('./src/components/atoms/button/IconDownloadBtn.vue')['default']
IconInfoBtn: typeof import('./src/components/atoms/button/IconInfoBtn.vue')['default']
@ -34,15 +26,11 @@ declare module 'vue' {
IconRunBtn: typeof import('./src/components/atoms/button/IconRunBtn.vue')['default']
IconSettingBtn: typeof import('./src/components/atoms/button/IconSettingBtn.vue')['default']
LayoutComponent: typeof import('./src/components/common/LayoutComponent.vue')['default']
ListComponent: typeof import('./src/components/templates/datagroup/ListComponent.vue')['default']
ListComponentback: typeof import('./src/components/templates/run/executions/ListComponentback.vue')['default']
ListComponent: typeof import('./src/components/templates/Datasets/ListComponent.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
RunSearchBar: typeof import('./src/components/templates/run/executions/RunSearchBar.vue')['default']
SidebarHeader: typeof import('./src/components/common/SidebarHeader.vue')['default']
TrainingGroupBaseDoalog: typeof import('./src/components/atoms/organisms/TrainingGroupBaseDoalog.vue')['default']
TrainingScriptBaseDoalog: typeof import('./src/components/atoms/organisms/TrainingScriptBaseDoalog.vue')['default']
TrainingScriptgroupBaseDoalog: typeof import('./src/components/atoms/organisms/TrainingScriptgroupBaseDoalog.vue')['default']
ViewComponent: typeof import('./src/components/templates/Datasets/ViewComponent.vue')['default']
WorkflowDialog: typeof import('./src/components/atoms/organisms/WorkflowDialog.vue')['default']
WorkflowsBaseDialog: typeof import('./src/components/atoms/organisms/WorkflowsBaseDialog.vue')['default']

@ -10,12 +10,19 @@ server {
# 백엔드 API 프록시
location /autoflow-server-mgmt/ {
proxy_pass http://backend:8080/; # Docker Compose 서비스 이름 사용
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
proxy_pass http://backend:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 타임아웃 연장
proxy_connect_timeout 600s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
send_timeout 600s;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {

27
package-lock.json generated

@ -13,10 +13,9 @@
"axios": "^1.11.0",
"dayjs": "^1.11.18",
"monaco-editor": "^0.52.2",
"plotly.js-dist-min": "^3.1.1",
"plotly.js-dist-min": "^3.0.1",
"prettier": "^3.5.3",
"vue": "^3.5.13",
"vue3-plotly": "^0.0.7",
"vuetify": "^3.8.1"
},
"devDependencies": {
@ -4760,16 +4759,10 @@
"pathe": "^2.0.3"
}
},
"node_modules/plotly.js-dist": {
"version": "2.35.3",
"resolved": "https://registry.npmjs.org/plotly.js-dist/-/plotly.js-dist-2.35.3.tgz",
"integrity": "sha512-dqB9+FUyBFZN04xWnZoYwaeeF4Jj9T/m0CHYmoozmPC3R4Dy0TRJsHgbRVLPxgYQqodzniVUj17+2wmJuGaZAg==",
"license": "MIT"
},
"node_modules/plotly.js-dist-min": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/plotly.js-dist-min/-/plotly.js-dist-min-3.1.1.tgz",
"integrity": "sha512-eyuiESylUXW4kaF+v9J2gy9eZ+YT2uSVLILM4w1Afxnuv9u4UX9OnZnHR1OdF9ybq4x7+9chAzWUUbQ6HvBb3g==",
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/plotly.js-dist-min/-/plotly.js-dist-min-3.0.1.tgz",
"integrity": "sha512-RReOqr6TfoHaTbVAoHR1UbTCOSRDsQ7Hbthd+3XAxOwaKmxCE3oejMhLG7urQSqWC65DAcSKV23kZd8e+7mG7w==",
"license": "MIT"
},
"node_modules/pluralize": {
@ -6459,18 +6452,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/vue3-plotly": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/vue3-plotly/-/vue3-plotly-0.0.7.tgz",
"integrity": "sha512-ydNOgbQlmg4Zp1etfUVsCKO4ejp/18oZ1pYr0b+pnhwYyx2BNZ+UyuK2PKKRwNdPSpohUBTDml3mhHiF54zVgQ==",
"license": "ISC",
"dependencies": {
"plotly.js-dist": "^2.24.2"
},
"peerDependencies": {
"vue": "^3.2.21"
}
},
"node_modules/vuetify": {
"version": "3.8.9",
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.8.9.tgz",

@ -15,10 +15,9 @@
"axios": "^1.11.0",
"dayjs": "^1.11.18",
"monaco-editor": "^0.52.2",
"plotly.js-dist-min": "^3.1.1",
"plotly.js-dist-min": "^3.0.1",
"prettier": "^3.5.3",
"vue": "^3.5.13",
"vue3-plotly": "^0.0.7",
"vuetify": "^3.8.1"
},
"devDependencies": {

2
typed-router.d.ts vendored

@ -19,7 +19,6 @@ declare module 'vue-router/auto-routes' {
*/
export interface RouteNamedMap {
'/': RouteRecordInfo<'/', '/', Record<never, never>, Record<never, never>>,
'/DatagroupView': RouteRecordInfo<'/DatagroupView', '/DatagroupView', Record<never, never>, Record<never, never>>,
'/DatasetView': RouteRecordInfo<'/DatasetView', '/DatasetView', Record<never, never>, Record<never, never>>,
'/DeploymentView': RouteRecordInfo<'/DeploymentView', '/DeploymentView', Record<never, never>, Record<never, never>>,
'/ExecutionsView': RouteRecordInfo<'/ExecutionsView', '/ExecutionsView', Record<never, never>, Record<never, never>>,
@ -29,7 +28,6 @@ declare module 'vue-router/auto-routes' {
'/MainView': RouteRecordInfo<'/MainView', '/MainView', Record<never, never>, Record<never, never>>,
'/ProjectView': RouteRecordInfo<'/ProjectView', '/ProjectView', Record<never, never>, Record<never, never>>,
'/SignupView': RouteRecordInfo<'/SignupView', '/SignupView', Record<never, never>, Record<never, never>>,
'/TrainingscriptgroupView': RouteRecordInfo<'/TrainingscriptgroupView', '/TrainingscriptgroupView', Record<never, never>, Record<never, never>>,
'/TrainingScriptView': RouteRecordInfo<'/TrainingScriptView', '/TrainingScriptView', Record<never, never>, Record<never, never>>,
'/UsersView': RouteRecordInfo<'/UsersView', '/UsersView', Record<never, never>, Record<never, never>>,
'/WorkflowStepConfigView': RouteRecordInfo<'/WorkflowStepConfigView', '/WorkflowStepConfigView', Record<never, never>, Record<never, never>>,

@ -14,8 +14,9 @@ import { fileURLToPath, URL } from "node:url";
// https://vitejs.dev/config/
export default defineConfig({
base:
process.env.NODE_ENV === "production" ? process.env.VITE_ROOT_PATH : "/",
// 배포할때는 주석 풀기
//base: process.env.VITE_ROOT_PATH,
base: "/autoflow/",
plugins: [
VueRouter(),
Layouts(),

Loading…
Cancel
Save