From 7aae4204bbb80563288b8743f2421a4716b2bf7b Mon Sep 17 00:00:00 2001 From: landaiqing <3517283258@qq.com> Date: Mon, 28 Oct 2024 22:11:09 +0800 Subject: [PATCH] :sparkles: add Dockerfile --- .eslintrc-auto-import.json | 230 ++++++++++++++++++++++++++++++++++++- Dockerfile | 12 ++ default.conf | 33 ++++++ eslint.config.js | 15 ++- package.json | 3 +- 5 files changed, 288 insertions(+), 5 deletions(-) create mode 100644 Dockerfile create mode 100644 default.conf diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index 74a9e1d..924f94b 100644 --- a/.eslintrc-auto-import.json +++ b/.eslintrc-auto-import.json @@ -79,6 +79,234 @@ "watch": true, "watchEffect": true, "watchPostEffect": true, - "watchSyncEffect": true + "watchSyncEffect": true, + "DirectiveBinding": true, + "MaybeRef": true, + "MaybeRefOrGetter": true, + "asyncComputed": true, + "autoResetRef": true, + "computedAsync": true, + "computedEager": true, + "computedInject": true, + "computedWithControl": true, + "controlledComputed": true, + "controlledRef": true, + "createEventHook": true, + "createGlobalState": true, + "createInjectionState": true, + "createReactiveFn": true, + "createReusableTemplate": true, + "createSharedComposable": true, + "createTemplatePromise": true, + "createUnrefFn": true, + "debouncedRef": true, + "debouncedWatch": true, + "eagerComputed": true, + "extendRef": true, + "ignorableWatch": true, + "injectLocal": true, + "isDefined": true, + "makeDestructurable": true, + "onClickOutside": true, + "onKeyStroke": true, + "onLongPress": true, + "onStartTyping": true, + "onWatcherCleanup": true, + "pausableWatch": true, + "provideLocal": true, + "reactify": true, + "reactifyObject": true, + "reactiveComputed": true, + "reactiveOmit": true, + "reactivePick": true, + "refAutoReset": true, + "refDebounced": true, + "refDefault": true, + "refThrottled": true, + "refWithControl": true, + "resolveRef": true, + "resolveUnref": true, + "syncRef": true, + "syncRefs": true, + "templateRef": true, + "throttledRef": true, + "throttledWatch": true, + "toReactive": true, + "tryOnBeforeMount": true, + "tryOnBeforeUnmount": true, + "tryOnMounted": true, + "tryOnScopeDispose": true, + "tryOnUnmounted": true, + "unrefElement": true, + "until": true, + "useActiveElement": true, + "useAnimate": true, + "useArrayDifference": true, + "useArrayEvery": true, + "useArrayFilter": true, + "useArrayFind": true, + "useArrayFindIndex": true, + "useArrayFindLast": true, + "useArrayIncludes": true, + "useArrayJoin": true, + "useArrayMap": true, + "useArrayReduce": true, + "useArraySome": true, + "useArrayUnique": true, + "useAsyncQueue": true, + "useAsyncState": true, + "useBase64": true, + "useBattery": true, + "useBluetooth": true, + "useBreakpoints": true, + "useBroadcastChannel": true, + "useBrowserLocation": true, + "useCached": true, + "useClipboard": true, + "useClipboardItems": true, + "useCloned": true, + "useColorMode": true, + "useConfirmDialog": true, + "useCounter": true, + "useCssVar": true, + "useCurrentElement": true, + "useCycleList": true, + "useDark": true, + "useDateFormat": true, + "useDebounce": true, + "useDebounceFn": true, + "useDebouncedRefHistory": true, + "useDeviceMotion": true, + "useDeviceOrientation": true, + "useDevicePixelRatio": true, + "useDevicesList": true, + "useDisplayMedia": true, + "useDocumentVisibility": true, + "useDraggable": true, + "useDropZone": true, + "useElementBounding": true, + "useElementByPoint": true, + "useElementHover": true, + "useElementSize": true, + "useElementVisibility": true, + "useEventBus": true, + "useEventListener": true, + "useEventSource": true, + "useEyeDropper": true, + "useFavicon": true, + "useFetch": true, + "useFileDialog": true, + "useFileSystemAccess": true, + "useFocus": true, + "useFocusWithin": true, + "useFps": true, + "useFullscreen": true, + "useGamepad": true, + "useGeolocation": true, + "useId": true, + "useIdle": true, + "useImage": true, + "useInfiniteScroll": true, + "useIntersectionObserver": true, + "useInterval": true, + "useIntervalFn": true, + "useKeyModifier": true, + "useLastChanged": true, + "useLocalStorage": true, + "useMagicKeys": true, + "useManualRefHistory": true, + "useMediaControls": true, + "useMediaQuery": true, + "useMemoize": true, + "useMemory": true, + "useModel": true, + "useMounted": true, + "useMouse": true, + "useMouseInElement": true, + "useMousePressed": true, + "useMutationObserver": true, + "useNavigatorLanguage": true, + "useNetwork": true, + "useNow": true, + "useObjectUrl": true, + "useOffsetPagination": true, + "useOnline": true, + "usePageLeave": true, + "useParallax": true, + "useParentElement": true, + "usePerformanceObserver": true, + "usePermission": true, + "usePointer": true, + "usePointerLock": true, + "usePointerSwipe": true, + "usePreferredColorScheme": true, + "usePreferredContrast": true, + "usePreferredDark": true, + "usePreferredLanguages": true, + "usePreferredReducedMotion": true, + "usePrevious": true, + "useRafFn": true, + "useRefHistory": true, + "useResizeObserver": true, + "useScreenOrientation": true, + "useScreenSafeArea": true, + "useScriptTag": true, + "useScroll": true, + "useScrollLock": true, + "useSessionStorage": true, + "useShare": true, + "useSorted": true, + "useSpeechRecognition": true, + "useSpeechSynthesis": true, + "useStepper": true, + "useStorage": true, + "useStorageAsync": true, + "useStyleTag": true, + "useSupported": true, + "useSwipe": true, + "useTemplateRef": true, + "useTemplateRefsList": true, + "useTextDirection": true, + "useTextSelection": true, + "useTextareaAutosize": true, + "useThrottle": true, + "useThrottleFn": true, + "useThrottledRefHistory": true, + "useTimeAgo": true, + "useTimeout": true, + "useTimeoutFn": true, + "useTimeoutPoll": true, + "useTimestamp": true, + "useTitle": true, + "useToNumber": true, + "useToString": true, + "useToggle": true, + "useTransition": true, + "useUrlSearchParams": true, + "useUserMedia": true, + "useVModel": true, + "useVModels": true, + "useVibrate": true, + "useVirtualList": true, + "useWakeLock": true, + "useWebNotification": true, + "useWebSocket": true, + "useWebWorker": true, + "useWebWorkerFn": true, + "useWindowFocus": true, + "useWindowScroll": true, + "useWindowSize": true, + "watchArray": true, + "watchAtMost": true, + "watchDebounced": true, + "watchDeep": true, + "watchIgnorable": true, + "watchImmediate": true, + "watchOnce": true, + "watchPausable": true, + "watchThrottled": true, + "watchTriggerable": true, + "watchWithFilter": true, + "whenever": true } } diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..dda3d7f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +# 设置基础镜像 +FROM nginx:latest +# 设置作者信息 +LABEL maintainer="landaiqing <>" +# 设置时区 +ENV TimeZone=Asia/Shanghai +# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面 +COPY dist/ /usr/share/nginx/html/ +# 用本地的 default.conf 配置来替换nginx镜像里的默认配置 +COPY default.conf /etc/nginx/conf.d/default.conf +# 暴露80端口 +EXPOSE 80 diff --git a/default.conf b/default.conf new file mode 100644 index 0000000..87fe814 --- /dev/null +++ b/default.conf @@ -0,0 +1,33 @@ +# nginx配置 +server { + listen 80 ; + server_name localhost; + index index.php index.html index.htm default.php default.htm default.html; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Host $server_name; + proxy_set_header X-Real-IP $remote_addr; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + access_log /var/log/nginx/host.access.log main; + error_log /var/log/nginx/error.log error; + + + location / { + root /usr/share/nginx/html; + try_files $uri $uri/ /index.html; + index index.html index.htm; + } + location ~* \.(js|css)$ { + gzip_static on; + expires max; + add_header Cache-Control "public"; + root /usr/share/nginx/html; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} diff --git a/eslint.config.js b/eslint.config.js index cb124f2..a5520f8 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -2,11 +2,20 @@ import globals from "globals"; import pluginJs from "@eslint/js"; import tseslint from "typescript-eslint"; import pluginVue from "eslint-plugin-vue"; - +import {fileURLToPath} from "node:url"; +import {dirname, resolve} from "path"; +import {readFileSync} from "node:fs"; +// 动态读取 .eslintrc-auto-import.json 文件内容 +const autoImportConfig = JSON.parse( + readFileSync( + resolve(dirname(fileURLToPath(import.meta.url)), ".eslintrc-auto-import.json"), + "utf-8", + ), +); export default [ {files: ["**/*.{js,mjs,cjs,ts,vue}"]}, - {languageOptions: {globals: {...globals.browser, ...globals.node}}}, + {languageOptions: {globals: {...globals.browser, ...globals.node, ...autoImportConfig.globals}}}, pluginJs.configs.recommended, ...tseslint.configs.recommended, ...pluginVue.configs["flat/essential"], @@ -17,7 +26,7 @@ export default [ "@typescript-eslint/no-explicit-any": "off", // "no-unused-vars": "off", // "@typescript-eslint/no-unused-vars": ["off"], - "vue/multi-word-component-names":"off", + "vue/multi-word-component-names": "off", } } ]; diff --git a/package.json b/package.json index 469d0c6..a99703f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "scripts": { "dev": "vite --mode development --host", "build": "vue-tsc -b && vite build --mode production", - "preview": "vite preview" + "preview": "vite preview", + "docker-build": "docker build -t schisandra/schisandra-cloud-album-front ." }, "dependencies": { "@alova/adapter-axios": "^2.0.9",