mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-07-13 19:23:03 +08:00
🔧 调整 Dockerfile 以及 Bison 的运行方式 (#447)
* 🔧 调整 Dockerfile 以及 Bison的运行方式 * ⏪ 不再为环境变量配置里的空值使用默认值 * 🔧 为 docker.env.prod 内的配置填写默认值
This commit is contained in:
parent
73f0ad71e6
commit
1a96d31dbf
@ -16,3 +16,4 @@ docs
|
||||
.*
|
||||
|
||||
!pyproject.toml
|
||||
!README.md
|
||||
|
2
.github/actions/setup-python/action.yml
vendored
2
.github/actions/setup-python/action.yml
vendored
@ -17,4 +17,4 @@ runs:
|
||||
- name: Setup Poetry
|
||||
uses: Gr1N/setup-poetry@v8
|
||||
with:
|
||||
poetry-version: "1.3.2"
|
||||
poetry-version: "1.7.1"
|
||||
|
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
@ -127,7 +127,7 @@ jobs:
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: frontend
|
||||
path: ./src/plugins/nonebot_bison/admin_page/dist
|
||||
path: ./nonebot_bison/admin_page/dist
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
@ -188,7 +188,7 @@ jobs:
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: frontend
|
||||
path: ./src/plugins/nonebot_bison/admin_page/dist
|
||||
path: ./nonebot_bison/admin_page/dist
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
18
bot.py
18
bot.py
@ -1,18 +0,0 @@
|
||||
from pathlib import Path
|
||||
|
||||
import nonebot
|
||||
from nonebot.adapters.onebot.v11 import Adapter as OneBotV11Adapter
|
||||
|
||||
nonebot.init(command_start=[""])
|
||||
app = nonebot.get_asgi()
|
||||
|
||||
driver = nonebot.get_driver()
|
||||
driver.register_adapter(OneBotV11Adapter)
|
||||
|
||||
nonebot.load_builtin_plugins("echo")
|
||||
# nonebot.load_plugin("nonebot_plugin_help")
|
||||
nonebot.load_plugin(Path(__file__).parent / "nonebot_bison")
|
||||
nonebot.load_plugins("extra_plugins")
|
||||
|
||||
if __name__ == "__main__":
|
||||
nonebot.run()
|
27
docker.env.prod
Normal file
27
docker.env.prod
Normal file
@ -0,0 +1,27 @@
|
||||
# 该文件会上传 Git 仓库以供 docker 读取环境变量使用
|
||||
# 在 dotenv 文件中声明的插件变量 nonebot2 才会读取并注入到 nonebot2 的 global_config 中
|
||||
# 请勿在开发时修改该文件或者填入敏感信息!
|
||||
|
||||
# nonebot2
|
||||
COMMAND_START=["/", ""]
|
||||
DRIVER=~fastapi+~aiohttp
|
||||
DATASTORE_DATA_DIR=/data
|
||||
TZ=Asia/Shanghai
|
||||
|
||||
# nonebot-bison
|
||||
BISON_CONFIG_PATH=
|
||||
BISON_USE_PIC=false
|
||||
BISON_INIT_FILTER=true
|
||||
BISON_USE_QUEUE=true
|
||||
BISON_OUTER_URL=
|
||||
BISON_FILTER_LOG=false
|
||||
BISON_TO_ME=true
|
||||
BISON_SKIP_BROWSER_CHECK=false
|
||||
BISON_USE_PIC_MERGE=0
|
||||
BISON_RESEND_TIMES=0
|
||||
BISON_PROXY=
|
||||
BISON_UA=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
|
||||
BISON_SHOW_NETWORK_WARNING=true
|
||||
|
||||
# nonebot-plugin-sentry
|
||||
SENTRY_DSN=
|
@ -3,13 +3,13 @@ ADD . /app
|
||||
WORKDIR /app/admin-frontend
|
||||
RUN yarn && yarn build
|
||||
|
||||
FROM python:3.9
|
||||
FROM python:3.11
|
||||
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
||||
WORKDIR /app
|
||||
COPY ./pyproject.toml ./poetry.lock* /app/
|
||||
RUN poetry install --no-root --no-dev
|
||||
COPY ./README.md ./pyproject.toml ./poetry.lock* /app/
|
||||
RUN poetry install --only=main,docker
|
||||
ADD src /app/src
|
||||
ADD bot.py /app/
|
||||
COPY --from=frontend /app/nonebot_bison/admin_page/dist /app/nonebot_bison/admin_page/dist
|
||||
ENV HOST=0.0.0.0
|
||||
CMD ["python", "bot.py"]
|
||||
CMD ["nb", "run"]
|
||||
|
@ -1,11 +1,10 @@
|
||||
FROM python:3.9
|
||||
RUN apt-get update && apt-get install -y fonts-wqy-microhei chromium
|
||||
FROM python:3.11
|
||||
RUN apt-get update && apt-get install -y fonts-wqy-microhei chromium nano
|
||||
RUN python3 -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
|
||||
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
||||
WORKDIR /app
|
||||
COPY ./pyproject.toml ./poetry.lock* /app/
|
||||
RUN poetry install --no-root --no-dev
|
||||
COPY ./README.md ./pyproject.toml ./poetry.lock* /app/
|
||||
RUN poetry install --only=main,docker
|
||||
ENV BISON_BROWSER=local:/usr/bin/chromium
|
||||
ADD src /app/src
|
||||
ADD bot.py /app/
|
||||
ENV HOST=0.0.0.0
|
||||
|
@ -1,10 +1,9 @@
|
||||
FROM python:3.9
|
||||
FROM python:3.11
|
||||
RUN python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
||||
WORKDIR /app
|
||||
COPY ./pyproject.toml ./poetry.lock* /app/
|
||||
RUN poetry install --no-root --no-dev
|
||||
COPY ./README.md ./pyproject.toml ./poetry.lock* /app/
|
||||
RUN poetry install --only=main,docker
|
||||
ADD src /app/src
|
||||
ADD bot.py /app/
|
||||
ENV HOST=0.0.0.0
|
||||
CMD ["python", "bot.py"]
|
||||
CMD ["nb", "run"]
|
||||
|
@ -14,16 +14,15 @@ ENV PYTHONFAULTHANDLER=1 \
|
||||
PATH="$PATH:/runtime/bin" \
|
||||
PYTHONPATH="$PYTHONPATH:/runtime/lib/python3.10/site-packages" \
|
||||
# Versions:
|
||||
POETRY_VERSION=1.2.2
|
||||
POETRY_VERSION=1.7.1
|
||||
RUN apt-get update && apt-get install -y build-essential unzip wget python-dev git
|
||||
RUN pip install "poetry==$POETRY_VERSION"
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY pyproject.toml poetry.lock /src/
|
||||
COPY README.md pyproject.toml poetry.lock /src/
|
||||
|
||||
RUN poetry add "nonebot2[fastapi]" nonebot-adapter-red nonebot-adapter-qq nonebot-adapter-telegram && \
|
||||
poetry export --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
|
||||
RUN poetry export --only=main,docker --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
|
||||
RUN pip install --prefix=/runtime --force-reinstall -r requirements.txt
|
||||
|
||||
FROM base as runtime
|
||||
@ -37,13 +36,16 @@ RUN --mount=type=cache,target=/var/cache/apt \
|
||||
fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 \
|
||||
libcairo2 libcups2 libdbus-1-3 libdrm2 libegl1 libgbm1 libglib2.0-0 libgtk-3-0 \
|
||||
libnspr4 libnss3 libpango-1.0-0 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \
|
||||
libxdamage1 libxext6 libxfixes3 libxrandr2 libxshmfence1
|
||||
libxdamage1 libxext6 libxfixes3 libxrandr2 libxshmfence1 nano
|
||||
|
||||
COPY --from=builder /runtime /usr/local
|
||||
RUN playwright install chromium
|
||||
ADD . /app/
|
||||
RUN echo 'DATASTORE_DATA_DIR=/data' > .env
|
||||
RUN pip install -e . && playwright install chromium
|
||||
RUN mv docker.env.prod .env.prod && \
|
||||
nb adapter install nonebot-adapter-red && \
|
||||
nb adapter install nonebot-adapter-qq && \
|
||||
nb adapter install nonebot-adapter-telegram
|
||||
ENV HOST=0.0.0.0
|
||||
CMD ["python", "bot.py"]
|
||||
CMD ["nb", "run"]
|
||||
|
||||
# vim: ft=dockerfile
|
||||
|
@ -14,7 +14,7 @@ ENV PYTHONFAULTHANDLER=1 \
|
||||
PATH="$PATH:/runtime/bin" \
|
||||
PYTHONPATH="$PYTHONPATH:/runtime/lib/python3.10/site-packages" \
|
||||
# Versions:
|
||||
POETRY_VERSION=1.2.2
|
||||
POETRY_VERSION=1.7.1
|
||||
RUN apt-get update && apt-get install -y build-essential unzip wget python3-dev git
|
||||
RUN pip install "poetry==$POETRY_VERSION"
|
||||
|
||||
@ -22,10 +22,7 @@ WORKDIR /src
|
||||
|
||||
COPY pyproject.toml poetry.lock /src/
|
||||
|
||||
RUN poetry add "nonebot2[fastapi]" \
|
||||
nonebot-adapter-red nonebot-adapter-qq nonebot-adapter-telegram \
|
||||
nonebot-plugin-sentry && \
|
||||
poetry export --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
|
||||
RUN poetry export --only=main,docker --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
|
||||
RUN pip install --prefix=/runtime --force-reinstall -r requirements.txt
|
||||
|
||||
FROM base as runtime
|
||||
@ -39,13 +36,17 @@ RUN --mount=type=cache,target=/var/cache/apt \
|
||||
fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 \
|
||||
libcairo2 libcups2 libdbus-1-3 libdrm2 libegl1 libgbm1 libglib2.0-0 libgtk-3-0 \
|
||||
libnspr4 libnss3 libpango-1.0-0 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \
|
||||
libxdamage1 libxext6 libxfixes3 libxrandr2 libxshmfence1
|
||||
libxdamage1 libxext6 libxfixes3 libxrandr2 libxshmfence1 nano
|
||||
|
||||
COPY --from=builder /runtime /usr/local
|
||||
RUN playwright install chromium
|
||||
ADD . /app/
|
||||
RUN echo 'DATASTORE_DATA_DIR=/data' > .env && sed '/nonebot.load_builtin_plugins("echo")/a nonebot.load_plugin("nonebot_plugin_sentry")' -i bot.py
|
||||
RUN pip install -e . && playwright install chromium
|
||||
RUN mv docker.env.prod .env.prod && \
|
||||
nb adapter install nonebot-adapter-red && \
|
||||
nb adapter install nonebot-adapter-qq && \
|
||||
nb adapter install nonebot-adapter-telegram && \
|
||||
nb plugin install nonebot-plugin-sentry
|
||||
ENV HOST=0.0.0.0
|
||||
CMD ["python", "bot.py"]
|
||||
CMD ["nb", "run"]
|
||||
|
||||
# vim: ft=dockerfile
|
||||
|
1374
poetry.lock
generated
1374
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -26,7 +26,7 @@ bs4 = ">=0.0.1,<0.0.3"
|
||||
expiringdict = "^1.2.1"
|
||||
feedparser = "^6.0.2"
|
||||
httpx = ">=0.16.1"
|
||||
nonebot2 = { version = "^2.0.0", extras = ["fastapi"] }
|
||||
nonebot2 = {extras = ["fastapi"], version = "^2.1.3"}
|
||||
nonebot-adapter-onebot = "^2.0.0"
|
||||
nonebot-plugin-htmlrender = ">=0.2.0"
|
||||
nonebot-plugin-datastore = ">=0.6.2,<2.0.0"
|
||||
@ -42,7 +42,7 @@ black = "^23.7.0"
|
||||
ipdb = "^0.13.4"
|
||||
isort = "^5.10.1"
|
||||
nonemoji = "^0.1.4"
|
||||
nb-cli = "^1.0.5"
|
||||
nb-cli = "^1.2.8"
|
||||
pre-commit = "^3.3.0"
|
||||
ruff = ">=0.0.278,<0.0.293"
|
||||
|
||||
@ -57,6 +57,17 @@ pytest-mock = "^3.10.0"
|
||||
pytest-xdist = { extras = ["psutil"], version = "^3.1.0" }
|
||||
respx = "^0.20.0"
|
||||
|
||||
[tool.poetry.group.docker]
|
||||
optional = true
|
||||
|
||||
[tool.poetry.group.docker.dependencies]
|
||||
nb-cli = "^1.2.8"
|
||||
nonebot2 = {extras = ["fastapi", "aiohttp"], version = "^2.1.3"}
|
||||
nonebot-adapter-red = "^0.7.4"
|
||||
nonebot-adapter-qq = "^1.3.4"
|
||||
nonebot-adapter-telegram = "^0.1.0b14"
|
||||
poetry-core = "^1.8.1"
|
||||
|
||||
[tool.poetry.extras]
|
||||
cli = ["anyio", "click", "typing-extensions"]
|
||||
yaml = ["pyyaml"]
|
||||
@ -66,8 +77,8 @@ all = ["anyio", "click", "typing-extensions", "pyyaml"]
|
||||
bison = "nonebot_bison.script.cli:main"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry>=1.0.0"]
|
||||
build-backend = "poetry.masonry.api"
|
||||
requires = ["poetry-core>=1.4.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
markers = [
|
||||
@ -102,7 +113,12 @@ src_paths = ["nonebot_bison", "tests"]
|
||||
extra_standard_library = ["typing_extensions"]
|
||||
|
||||
[tool.nonebot]
|
||||
adapters = [
|
||||
{ name = "OneBot V11", module_name = "nonebot.adapters.onebot.v11" },
|
||||
]
|
||||
plugins = ["nonebot_bison"]
|
||||
plugin_dirs = ["extra_plugins"]
|
||||
builtin_plugins = ["echo"]
|
||||
|
||||
[tool.pyright]
|
||||
reportShadowedImports = false
|
||||
@ -114,3 +130,8 @@ executionEnvironments = [
|
||||
] },
|
||||
{ root = "./" },
|
||||
]
|
||||
|
||||
[[tool.poetry.source]]
|
||||
name = "offical-source"
|
||||
url = "https://pypi.org/simple/"
|
||||
priority="default"
|
||||
|
Loading…
x
Reference in New Issue
Block a user