diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2d11e45..f699c78 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,51 +1,37 @@ -# This is a basic workflow to help you get started with Actions +# reference: +# 1. https://github.com/docker/build-push-action/blob/master/docs/advanced/push-multi-registries.md +# 2. https://github.com/docker/build-push-action/blob/master/docs/advanced/share-image-jobs.md -name: Docker Build, Push and Publish - -# Controls when the action will run. Triggers the workflow on push or pull request -# events but only for the master branch +name: Deploy to Production environment on: push: tags: - v* +env: + ARTIFACT_PATH: artifact.tar + BOX_NAME: ${{ github.event.repository.name }} + BOX_URL: ${{ github.repository }} + DOCKER_BUILD_SUMMARY: false + DOCKER_BUILD_RECORD_UPLOAD: false -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - docker: + deploy_docker_image: + name: Deploy Docker image runs-on: ubuntu-latest permissions: + contents: read packages: read steps: - uses: actions/checkout@v4 - - name: Docker meta - id: docker_meta - uses: docker/metadata-action@v5 - with: - # list of Docker images to use as base name for tags - images: openhackathon/oph-web,kysprodacr.azurecr.cn/oph-web - # add Git short SHA as Docker tag - tags: | - type=sha - - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_ACCESSTOKEN }} - - - name: Login to Azure Container Registry - uses: docker/login-action@v3 - with: - registry: kysprodacr.azurecr.cn - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_PASSWORD }} - - name: Inject Environment variables run: | + echo "BOX_NAME=${BOX_NAME@L}" >> "${GITHUB_ENV}" + echo "BOX_URL=${BOX_URL@L}" >> "${GITHUB_ENV}" cat >> .npmrc < = observer( - ({ value = [] }) => ( - - -
-
- - - -
-

- {t('hacker_pavilion')} -

-
- - {value.slice(0, 3).map(({ userId, score, user }) => ( - -
- {user?.name -
- - - ))} -
- - - - - {value.slice(3).map(({ userId, score, rank, user }) => ( - - - - - - - ))} - -
- - {rank < 9 && 0} - {rank + 1} - - -
- {user?.name -
- - {user?.name || t('mystery_hacker')} - -
{score} - -
- -
- ), -); diff --git a/components/User/UserRank/Address.tsx b/components/User/UserRank/Address.tsx deleted file mode 100644 index 3ba9f33..0000000 --- a/components/User/UserRank/Address.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { faGithub } from '@fortawesome/free-brands-svg-icons'; -import { faEnvelope } from '@fortawesome/free-solid-svg-icons'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { FC } from 'react'; - -export type UserAddressProps = Partial>; - -export const UserAddress: FC = ({ email, github }) => ( -
- {email && ( - - - - )} - {github && ( - - - - )} -
-); diff --git a/components/User/UserRank/index.module.less b/components/User/UserRank/index.module.less deleted file mode 100644 index 560dbf7..0000000 --- a/components/User/UserRank/index.module.less +++ /dev/null @@ -1,214 +0,0 @@ -@logo-img: 'https://hackathon-api.static.kaiyuanshe.cn/6342619375fa1817e0f56ce1/2022/10/09/logo22.jpg'; - -.topUserRow { - .imgBox { - width: 2.1rem; - &:hover img { - transition: all 0.3s; - transform: scale(1.1); - } - } - .showTitle { - position: relative; - height: 4.8rem; - padding-top: 1.2rem; - z-index: 4; - background-attachment: fixed; - background-image: url('https://hackathon-api.static.kaiyuanshe.cn/6342619375fa1817e0f56ce1/2022/10/09/rrrr.png'); - background-size: 21rem auto; - margin-top: 1.5rem; - &::before { - content: ''; - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border-radius: 0.3rem; - background-color: rgba(161, 160, 152, 0.7); - } - .showMedal { - position: absolute; - top: -1.2rem; - left: 5%; - i { - width: 1.7rem; - height: 1.7rem; - background-image: url(@logo-img), linear-gradient(#ffd83a, #fdeba0); - background-blend-mode: lighten; - background-position: center; - background-size: 1.5rem 1.5rem; - background-repeat: no-repeat; - border: 0.1rem solid #ffd83a; - box-shadow: 0 0 0.5rem 0 #ffd83a; - &:first-child { - border-color: #d8d8d8; - box-shadow: 0 0 0.5rem 0 #d8d8d8; - background-image: url(@logo-img), linear-gradient(#d8d8d8, #eeeeee); - } - &:last-child { - border-color: #fab36e; - box-shadow: 0 0 0.5rem 0 #fab36e; - background-image: url(@logo-img), linear-gradient(#fab36e, #fbe7d3); - } - } - } - h3 { - position: relative; - z-index: 2; - font-size: 2rem; - letter-spacing: 0.4rem; - width: 10rem; - cursor: default; - text-shadow: - 0px 1px 0px #c0c0c0, - 0px 2px 0px #b0b0b0, - 0px 3px 0px #a0a0a0, - 0px 4px 0px #909090, - 0px 5px 10px rgba(0, 0, 0, 0.6); - color: transparent; - font-family: "'book antiqua', palatino, serif"; - &::after { - content: attr(data-text); - display: block; - position: absolute; - z-index: 1; - top: 0; - left: 0; - width: 10rem; - margin: 0 auto; - text-shadow: none; - background-image: linear-gradient( - to right, - #d8d8d8 10%, - #ffd83a 60%, - #fab36e 75% - ); - background-clip: text; - } - } - } - .topUserUl { - z-index: 5; - li { - text-align: center; - cursor: default; - &:nth-child(2) { - order: 1; - padding-top: 1rem; - .showBox { - color: #d8d8d8; - border-bottom: 1.2rem solid #d8d8d8; - text-shadow: 0px 1px 0px #d9cdcd 0px 2px 5px rgba(133, 132, 130, 0.4); - i { - background-image: url(@logo-img), linear-gradient(#d8d8d8, #eeeeee); - } - } - .imgBox { - width: 6rem; - animation-delay: 1.4s; - } - } - &:nth-child(3) { - order: 3; - padding-top: 1.5rem; - .showBox { - border-bottom: 1rem solid #fab36e; - color: #fab36e; - text-shadow: - 0px 1px 0px #aa8865, - 0px 2px 5px rgba(167, 129, 67, 0.4); - i { - background-image: url(@logo-img), linear-gradient(#fab36e, #fbe7d3); - } - } - .imgBox { - width: 5.6rem; - animation-delay: 2.4s; - } - } - &:hover .imgBox { - animation-play-state: paused; - } - } - .showBox { - min-height: 6rem; - letter-spacing: 1px; - z-index: 3; - } - li:nth-child(1) { - order: 2; - padding-top: 0.3rem; - .showBox { - color: #ffd83a; - border-bottom: 1.5rem solid #ffd83a; - text-shadow: - 0px 1px 0px #969653, - 0px 2px 5px rgba(240, 219, 100, 0.4); - i { - width: 2.5rem; - height: 2.6rem; - background-image: url(@logo-img), linear-gradient(#ffd83a, #fdeba0); - background-blend-mode: lighten; - background-position: center; - background-size: 2.5rem auto; - background-repeat: no-repeat; - } - } - .imgBox { - width: 6.4rem; - animation-delay: 3.5s; - } - } - .imgBox { - z-index: 2; - animation: 3.5s suspension ease-in-out infinite; - transition: all 0.6s; - } - } - .topUserList { - tr { - &::before { - content: ''; - position: absolute; - display: block; - right: 0; - bottom: 0; - width: 0; - height: 2px; - background: #9fc2ef; - transition: all 0.5s; - } - &:hover::before { - left: 0; - width: 100%; - } - } - td { - cursor: default; - .usernameBox { - font-size: 0; - &:hover { - .imgBox > img { - transform: scale(1.2); - } - } - } - } - } -} -@keyframes suspension { - 0% { - position: relative; - top: 0px; - } - 50% { - position: relative; - top: -0.8rem; - } - 100% { - position: relative; - top: 0px; - } -} diff --git a/package.json b/package.json index f1afad9..2643ca8 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "array-unique-proposal": "^0.3.4", "classnames": "^2.5.1", "echarts-jsx": "^0.5.4", - "idea-react": "^2.0.0-rc.2", + "idea-react": "^2.0.0-rc.7", "jsonwebtoken": "^9.0.2", "koajax": "^3.0.2", "leaflet": "^1.9.4", @@ -47,9 +47,9 @@ "@kaiyuanshe/openhackathon-service": "^0.21.1", "@octokit/openapi-types": "^22.2.0", "@types/jsonwebtoken": "^9.0.7", - "@types/leaflet": "^1.9.12", + "@types/leaflet": "^1.9.13", "@types/next-pwa": "^5.6.9", - "@types/node": "^20.16.12", + "@types/node": "^20.16.13", "@types/react": "^18.3.11", "eslint": "^8.57.1", "eslint-config-next": "^14.2.15", diff --git a/pages/_document.tsx b/pages/_document.tsx index 1bbc284..1749da4 100644 --- a/pages/_document.tsx +++ b/pages/_document.tsx @@ -13,11 +13,15 @@ export default function Document() { + = observer(({ activities, topUsers }) => ( }} > - + ({ + id: userId, + name, + avatar, + email, + score, + }), + )} + linkOf={({ id }) => `/user/${id}`} + /> diff --git a/pages/open-source.tsx b/pages/open-source.tsx index c28d6c0..87b1a40 100644 --- a/pages/open-source.tsx +++ b/pages/open-source.tsx @@ -1,4 +1,4 @@ -import { User } from '@kaiyuanshe/openhackathon-service'; +import { UserRankView } from 'idea-react'; import { Contributor, GitRepository } from 'mobx-github'; import { observer } from 'mobx-react'; import { cache, compose, translator } from 'next-ssr-middleware'; @@ -7,7 +7,6 @@ import { Col, Container, Row } from 'react-bootstrap'; import { GitCard, SimpleRepository } from '../components/Git/Card'; import { PageHead } from '../components/layout/PageHead'; -import { UserRankView } from '../components/User/TopUserList'; import { i18n, t } from '../models/Base/Translation'; import { SourceRepository, SourceRepositoryModel } from '../models/Git'; @@ -60,14 +59,23 @@ const OpenSourcePage: FC = observer(

{t('team_members')}

({ - userId: id!, - user: { id, name: login, avatar: avatar_url } as User, + style={{ + // @ts-expect-error remove in React 19 + '--logo-image': + 'url(https://hackathon-api.static.kaiyuanshe.cn/6342619375fa1817e0f56ce1/2022/10/09/logo22.jpg)', + }} + title={t('hacker_pavilion')} + rank={contributors.map( + ({ id, login, avatar_url, email, html_url, contributions }) => ({ + id: id!, + name: login!, + avatar: avatar_url, + email, + website: html_url, score: contributions, - rank: index + 1, }), )} + linkOf={({ website }) => website!} /> ), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f6496b8..5b002e2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,8 +43,8 @@ importers: specifier: ^0.5.4 version: 0.5.4(react@18.3.1)(typescript@5.6.3) idea-react: - specifier: ^2.0.0-rc.2 - version: 2.0.0-rc.2(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + specifier: ^2.0.0-rc.7 + version: 2.0.0-rc.7(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) jsonwebtoken: specifier: ^9.0.2 version: 9.0.2 @@ -128,14 +128,14 @@ importers: specifier: ^9.0.7 version: 9.0.7 '@types/leaflet': - specifier: ^1.9.12 - version: 1.9.12 + specifier: ^1.9.13 + version: 1.9.13 '@types/next-pwa': specifier: ^5.6.9 version: 5.6.9(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/node': - specifier: ^20.16.12 - version: 20.16.12 + specifier: ^20.16.13 + version: 20.16.13 '@types/react': specifier: ^18.3.11 version: 18.3.11 @@ -150,7 +150,7 @@ importers: version: 12.1.1(eslint@8.57.1) get-git-folder: specifier: ^0.1.2 - version: 0.1.2(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.12) + version: 0.1.2(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.13) husky: specifier: ^9.1.6 version: 9.1.6 @@ -1463,8 +1463,8 @@ packages: '@types/koa@2.15.0': resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} - '@types/leaflet@1.9.12': - resolution: {integrity: sha512-BK7XS+NyRI291HIo0HCfE18Lp8oA30H1gpi1tf0mF3TgiCEzanQjOqNZ4x126SXzzi2oNSZhZ5axJp1k0iM6jg==} + '@types/leaflet@1.9.13': + resolution: {integrity: sha512-wwLL4VKKwYlLmhMQRc/8HT5/8HgkzZyETG0hG3nbsSiHKSdxBWZnHqEkRIOOtpyUks3gbc81dk9WgQMC6bicDw==} '@types/lodash@4.17.10': resolution: {integrity: sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==} @@ -1487,8 +1487,8 @@ packages: '@types/node@18.19.56': resolution: {integrity: sha512-4EMJlWwwGnVPflJAtM14p9eVSa6BOv5b92mCsh5zcM1UagNtEtrbbtaE6WE1tw2TabavatnwqXjlIpcAEuJJNg==} - '@types/node@20.16.12': - resolution: {integrity: sha512-LfPFB0zOeCeCNQV3i+67rcoVvoN5n0NVuR2vLG0O5ySQMgchuZlC4lgz546ZOJyDtj5KIgOxy+lacOimfqZAIA==} + '@types/node@20.16.13': + resolution: {integrity: sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==} '@types/pg-pool@2.0.6': resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} @@ -2563,8 +2563,8 @@ packages: idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} - idea-react@2.0.0-rc.2: - resolution: {integrity: sha512-E+HZegixmsKRplvZol9AU6GAH8Hzn1dzwKqizos9hsd3vjMSr2dG0dtABelERdrqifhTIO7YYxnubTsExjK9xQ==} + idea-react@2.0.0-rc.7: + resolution: {integrity: sha512-H/sK1OwPvNGQsG5j/VVTDppm4YgEmI8/R9/IpjPql7IN2G23hpMKxklHTLf+QaFxbZHrZ+Tu14cE6xagdRDV4g==} peerDependencies: react: '>=16' react-dom: '>=16' @@ -5830,12 +5830,12 @@ snapshots: optionalDependencies: fetch-blob: 3.2.0 - '@tech_query/node-toolkit@1.2.1(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.12)': + '@tech_query/node-toolkit@1.2.1(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.13)': dependencies: '@babel/core': 7.25.8 '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.8) '@babel/preset-env': 7.25.8(@babel/core@7.25.8) - '@types/node': 20.16.12 + '@types/node': 20.16.13 cross-spawn: 7.0.3 file-type: 16.5.4 fs-extra: 11.2.0 @@ -5852,20 +5852,20 @@ snapshots: '@types/accepts@1.3.7': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/connect@3.4.36': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/connect@3.4.38': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/content-disposition@0.5.8': {} @@ -5874,7 +5874,7 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 5.0.0 '@types/keygrip': 1.0.6 - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/estree@0.0.39': {} @@ -5882,7 +5882,7 @@ snapshots: '@types/express-serve-static-core@5.0.0': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -5897,14 +5897,14 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/geojson@7946.0.14': {} '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/http-assert@1.5.5': {} @@ -5916,11 +5916,11 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/jsonwebtoken@9.0.7': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/keygrip@1.0.6': {} @@ -5937,9 +5937,9 @@ snapshots: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.16.12 + '@types/node': 20.16.13 - '@types/leaflet@1.9.12': + '@types/leaflet@1.9.13': dependencies: '@types/geojson': 7946.0.14 @@ -5953,11 +5953,11 @@ snapshots: '@types/mysql@2.15.26': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/next-pwa@5.6.9(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/react': 18.3.11 '@types/react-dom': 18.3.1 next: 14.2.15(@babel/core@7.25.8)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -5977,7 +5977,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@20.16.12': + '@types/node@20.16.13': dependencies: undici-types: 6.19.8 @@ -5987,7 +5987,7 @@ snapshots: '@types/pg@8.6.1': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 pg-protocol: 1.7.0 pg-types: 2.2.0 @@ -6014,17 +6014,17 @@ snapshots: '@types/resolve@1.17.1': dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.16.12 + '@types/node': 20.16.13 '@types/send': 0.17.4 '@types/shimmer@1.2.0': {} @@ -6509,9 +6509,9 @@ snapshots: colorette@2.0.20: {} - commander-jsx@0.6.9(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.12): + commander-jsx@0.6.9(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.13): dependencies: - '@tech_query/node-toolkit': 1.2.1(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.12) + '@tech_query/node-toolkit': 1.2.1(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.13) tslib: 2.8.0 transitivePeerDependencies: - '@babel/plugin-transform-modules-commonjs' @@ -7189,9 +7189,9 @@ snapshots: get-east-asian-width@1.3.0: {} - get-git-folder@0.1.2(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.12): + get-git-folder@0.1.2(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.13): dependencies: - commander-jsx: 0.6.9(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.12) + commander-jsx: 0.6.9(@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8))(@babel/preset-env@7.25.8(@babel/core@7.25.8))(@types/node@20.16.13) zx: 7.2.3 transitivePeerDependencies: - '@babel/plugin-transform-modules-commonjs' @@ -7363,7 +7363,7 @@ snapshots: idb@7.1.1: {} - idea-react@2.0.0-rc.2(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3): + idea-react@2.0.0-rc.7(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3): dependencies: '@editorjs/editorjs': 2.30.6 '@editorjs/paragraph': 2.11.6 @@ -7611,13 +7611,13 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@27.5.1: dependencies: - '@types/node': 20.16.12 + '@types/node': 20.16.13 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -8158,7 +8158,7 @@ snapshots: open-react-map@0.8.0(mobx-react@9.1.1(mobx@6.13.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(mobx@6.13.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3): dependencies: '@swc/helpers': 0.5.13 - '@types/leaflet': 1.9.12 + '@types/leaflet': 1.9.13 koajax: 0.9.6(typescript@5.6.3) leaflet: 1.9.4 mobx: 6.13.5 diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..5c45a56 --- /dev/null +++ b/start.sh @@ -0,0 +1,9 @@ +#! /usr/bin/env bash + +docker load < $1 +docker image ls -a + +docker-compose down +docker-compose up -d + +docker image prune -a -f \ No newline at end of file