| FROM node:18 |
|
|
| # 克隆项目 |
| RUN git clone https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git |
| WORKDIR "ChatGPT-Next-Web" |
|
|
| # 创建新的样式文件 |
| RUN echo '@import "./animation.scss";\n\ |
| @import "./window.scss";\n\ |
| \n\ |
| @mixin light {\n\ |
| --theme: light;\n\ |
| --white: #fff;\n\ |
| --black: #303030;\n\ |
| --gray: #fafafa;\n\ |
| --primary: #315ef8;\n\ |
| --second: #f3f3f6;\n\ |
| --hover-color: #f3f3f3;\n\ |
| --bar-color: rgba(0,0,0,.1);\n\ |
| --theme-color: var(--gray);\n\ |
| --shadow: 50px 50px 100px 10px rgba(0,0,0,.1);\n\ |
| --card-shadow: 0px 2px 4px 0px rgba(0,0,0,.05);\n\ |
| --border-in-light: 1px solid #dedede;\n\ |
| --sidebar-sub-title: rgba(38,47,156,.5);\n\ |
| }\n\ |
| \n\ |
| @mixin dark {\n\ |
| --theme: dark;\n\ |
| --white: #1e1e1e;\n\ |
| --black: #bbb;\n\ |
| --gray: #151515;\n\ |
| --primary: #315ef8;\n\ |
| --second: #26262c;\n\ |
| --hover-color: #323232;\n\ |
| --bar-color: rgba(255, 255, 255, 0.1);\n\ |
| --border-in-light: 1px solid rgba(255, 255, 255, 0.192);\n\ |
| --theme-color: var(--gray);\n\ |
| \n\ |
| div:not(.no-dark) > svg {\n\ |
| filter: invert(0.5);\n\ |
| }\n\ |
| }\n\ |
| \n\ |
| .light {\n\ |
| @include light;\n\ |
| }\n\ |
| \n\ |
| .dark {\n\ |
| @include dark;\n\ |
| }\n\ |
| \n\ |
| .mask {\n\ |
| filter: invert(0.8);\n\ |
| }\n\ |
| \n\ |
| :root {\n\ |
| @include light;\n\ |
| \n\ |
| --window-width: 90vw;\n\ |
| --window-height: 90vh;\n\ |
| --sidebar-width: 300px;\n\ |
| --window-content-width: calc(100% - var(--sidebar-width));\n\ |
| --message-max-width: 80%;\n\ |
| --full-height: 100%;\n\ |
| }\n\ |
| \n\ |
| @media only screen and (max-width: 600px) {\n\ |
| :root {\n\ |
| --window-width: 100vw;\n\ |
| --window-height: var(--full-height);\n\ |
| --sidebar-width: 100vw;\n\ |
| --window-content-width: var(--window-width);\n\ |
| --message-max-width: 100%;\n\ |
| }\n\ |
| \n\ |
| .no-mobile {\n\ |
| display: none;\n\ |
| }\n\ |
| }\n\ |
| \n\ |
| @media (prefers-color-scheme: dark) {\n\ |
| :root {\n\ |
| @include dark;\n\ |
| }\n\ |
| }' > /tmp/new_globals.scss |
|
|
| # 将剩余的原始样式内容附加到新文件中 |
| RUN sed -n '/html {/,$p' app/styles/globals.scss >> /tmp/new_globals.scss |
|
|
| # 备份原始文件并替换为新文件 |
| RUN cp app/styles/globals.scss app/styles/globals.scss.backup && \ |
| cp /tmp/new_globals.scss app/styles/globals.scss |
|
|
| # 修改标题和副标题 |
| RUN sed -i 's/NextChat/NieAI Chat/g' app/components/sidebar.tsx |
| RUN sed -i 's/Build your own AI assistant./Quickly start your AI journey./g' app/components/sidebar.tsx |
|
|
| # 替换 logo |
| COPY chatgpt.svg app/icons/chatgpt.svg |
|
|
| # 安装依赖并构建 |
| RUN npm i |
| RUN npm run build |
|
|
| # 安装 cloudflared |
| COPY --from=cloudflare/cloudflared:latest /usr/local/bin/cloudflared /usr/local/bin/cloudflared |
|
|
| EXPOSE 3000 |
|
|
| # 使用shell形式的ENTRYPOINT来运行多个命令 |
| ENTRYPOINT cloudflared tunnel --no-autoupdate run --token $CF_TOKEN & \ |
| npm run start |