diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..38d43ddb8 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +*.md +.idea +.git diff --git a/Dockerfile b/Dockerfile index baecefdff..36d3847d2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,26 @@ -FROM python:3.9.5-slim-buster +FROM node:18-alpine as webui +COPY . /app +WORKDIR /app/fcb-fronted/ +ENV NPM_CONFIG_LOGLEVEL=verbose +RUN npm i +RUN npm run build-only +# 似乎需要把文件移动才能正常 +RUN mv dist/logo_small.png dist/assets/ + + +FROM python:3.9.5-alpine as FileCodeBox LABEL author="Lan" LABEL email="vast@tom.com" LABEL version="6" -COPY . /app +# 先安装依赖可以产生缓存 +WORKDIR /app +COPY requirements.txt /app +RUN /usr/local/bin/python -m pip install --upgrade pip && pip install -r requirements.txt +COPY ./backend/ /app +COPY --from=webui /app/fcb-fronted/dist/ /app/dist RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' >/etc/timezone -WORKDIR /app -RUN pip install -r requirements.txt EXPOSE 12345 CMD ["python","main.py"] \ No newline at end of file diff --git a/apps/__init__.py b/backend/apps/__init__.py similarity index 100% rename from apps/__init__.py rename to backend/apps/__init__.py diff --git a/apps/admin/__init__.py b/backend/apps/admin/__init__.py similarity index 100% rename from apps/admin/__init__.py rename to backend/apps/admin/__init__.py diff --git a/apps/admin/depends.py b/backend/apps/admin/depends.py similarity index 100% rename from apps/admin/depends.py rename to backend/apps/admin/depends.py diff --git a/apps/admin/pydantics.py b/backend/apps/admin/pydantics.py similarity index 100% rename from apps/admin/pydantics.py rename to backend/apps/admin/pydantics.py diff --git a/apps/admin/views.py b/backend/apps/admin/views.py similarity index 100% rename from apps/admin/views.py rename to backend/apps/admin/views.py diff --git a/apps/base/__init__.py b/backend/apps/base/__init__.py similarity index 100% rename from apps/base/__init__.py rename to backend/apps/base/__init__.py diff --git a/apps/base/depends.py b/backend/apps/base/depends.py similarity index 100% rename from apps/base/depends.py rename to backend/apps/base/depends.py diff --git a/apps/base/models.py b/backend/apps/base/models.py similarity index 100% rename from apps/base/models.py rename to backend/apps/base/models.py diff --git a/apps/base/pydantics.py b/backend/apps/base/pydantics.py similarity index 100% rename from apps/base/pydantics.py rename to backend/apps/base/pydantics.py diff --git a/apps/base/utils.py b/backend/apps/base/utils.py similarity index 100% rename from apps/base/utils.py rename to backend/apps/base/utils.py diff --git a/apps/base/views.py b/backend/apps/base/views.py similarity index 100% rename from apps/base/views.py rename to backend/apps/base/views.py diff --git a/core/__init__.py b/backend/core/__init__.py similarity index 100% rename from core/__init__.py rename to backend/core/__init__.py diff --git a/core/response.py b/backend/core/response.py similarity index 100% rename from core/response.py rename to backend/core/response.py diff --git a/core/settings.py b/backend/core/settings.py similarity index 100% rename from core/settings.py rename to backend/core/settings.py diff --git a/core/storage.py b/backend/core/storage.py similarity index 100% rename from core/storage.py rename to backend/core/storage.py diff --git a/core/tasks.py b/backend/core/tasks.py similarity index 100% rename from core/tasks.py rename to backend/core/tasks.py diff --git a/core/utils.py b/backend/core/utils.py similarity index 100% rename from core/utils.py rename to backend/core/utils.py diff --git a/main.py b/backend/main.py similarity index 88% rename from main.py rename to backend/main.py index 2c2ddeee5..fe148ca66 100644 --- a/main.py +++ b/backend/main.py @@ -31,20 +31,20 @@ async def assets(file_path: str): if settings.max_save_seconds > 0: if re.match(r'SendView-[\d|a-f|A-F]+\.js', file_path): - with open(BASE_DIR / f'./fcb-fronted/dist/assets/{file_path}', 'r', encoding='utf-8') as f: + with open(BASE_DIR / f'./dist/assets/{file_path}', 'r', encoding='utf-8') as f: # 删除永久保存选项 content = f.read() content = content.replace('_(c,{label:e(r)("send.expireData.forever"),value:"forever"},null,8,["label"]),', '') return HTMLResponse(content=content, media_type='text/javascript') if re.match(r'index-[\d|a-f|A-F]+\.js', file_path): - with open(BASE_DIR / f'./fcb-fronted/dist/assets/{file_path}', 'r', encoding='utf-8') as f: + with open(BASE_DIR / f'./dist/assets/{file_path}', 'r', encoding='utf-8') as f: # 更改本文描述 desc_zh, desc_en = await max_save_times_desc(settings.max_save_seconds) content = f.read() content = content.replace('天数<7', desc_zh) content = content.replace('Days <7', desc_en) return HTMLResponse(content=content, media_type='text/javascript') - return FileResponse(f'./fcb-fronted/dist/assets/{file_path}') + return FileResponse(f'./dist/assets/{file_path}') register_tortoise( @@ -79,7 +79,7 @@ async def startup_event(): @app.get('/') async def index(): return HTMLResponse( - content=open(BASE_DIR / './fcb-fronted/dist/index.html', 'r', encoding='utf-8').read() + content=open(BASE_DIR / './dist/index.html', 'r', encoding='utf-8').read() .replace('{{title}}', str(settings.name)) .replace('{{description}}', str(settings.description)) .replace('{{keywords}}', str(settings.keywords))