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
|
!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
|
- name: Setup Poetry
|
||||||
uses: Gr1N/setup-poetry@v8
|
uses: Gr1N/setup-poetry@v8
|
||||||
with:
|
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
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: frontend
|
name: frontend
|
||||||
path: ./src/plugins/nonebot_bison/admin_page/dist
|
path: ./nonebot_bison/admin_page/dist
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
@ -188,7 +188,7 @@ jobs:
|
|||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: frontend
|
name: frontend
|
||||||
path: ./src/plugins/nonebot_bison/admin_page/dist
|
path: ./nonebot_bison/admin_page/dist
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
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
|
WORKDIR /app/admin-frontend
|
||||||
RUN yarn && yarn build
|
RUN yarn && yarn build
|
||||||
|
|
||||||
FROM python:3.9
|
FROM python:3.11
|
||||||
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY ./pyproject.toml ./poetry.lock* /app/
|
COPY ./README.md ./pyproject.toml ./poetry.lock* /app/
|
||||||
RUN poetry install --no-root --no-dev
|
RUN poetry install --only=main,docker
|
||||||
ADD src /app/src
|
ADD src /app/src
|
||||||
ADD bot.py /app/
|
ADD bot.py /app/
|
||||||
COPY --from=frontend /app/nonebot_bison/admin_page/dist /app/nonebot_bison/admin_page/dist
|
COPY --from=frontend /app/nonebot_bison/admin_page/dist /app/nonebot_bison/admin_page/dist
|
||||||
ENV HOST=0.0.0.0
|
ENV HOST=0.0.0.0
|
||||||
CMD ["python", "bot.py"]
|
CMD ["nb", "run"]
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
FROM python:3.9
|
FROM python:3.11
|
||||||
RUN apt-get update && apt-get install -y fonts-wqy-microhei chromium
|
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 config set global.index-url https://mirrors.aliyun.com/pypi/simple
|
||||||
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY ./pyproject.toml ./poetry.lock* /app/
|
COPY ./README.md ./pyproject.toml ./poetry.lock* /app/
|
||||||
RUN poetry install --no-root --no-dev
|
RUN poetry install --only=main,docker
|
||||||
ENV BISON_BROWSER=local:/usr/bin/chromium
|
ENV BISON_BROWSER=local:/usr/bin/chromium
|
||||||
ADD src /app/src
|
ADD src /app/src
|
||||||
ADD bot.py /app/
|
|
||||||
ENV HOST=0.0.0.0
|
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 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
|
||||||
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
RUN python3 -m pip install poetry && poetry config virtualenvs.create false
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY ./pyproject.toml ./poetry.lock* /app/
|
COPY ./README.md ./pyproject.toml ./poetry.lock* /app/
|
||||||
RUN poetry install --no-root --no-dev
|
RUN poetry install --only=main,docker
|
||||||
ADD src /app/src
|
ADD src /app/src
|
||||||
ADD bot.py /app/
|
|
||||||
ENV HOST=0.0.0.0
|
ENV HOST=0.0.0.0
|
||||||
CMD ["python", "bot.py"]
|
CMD ["nb", "run"]
|
||||||
|
@ -14,16 +14,15 @@ ENV PYTHONFAULTHANDLER=1 \
|
|||||||
PATH="$PATH:/runtime/bin" \
|
PATH="$PATH:/runtime/bin" \
|
||||||
PYTHONPATH="$PYTHONPATH:/runtime/lib/python3.10/site-packages" \
|
PYTHONPATH="$PYTHONPATH:/runtime/lib/python3.10/site-packages" \
|
||||||
# Versions:
|
# 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 apt-get update && apt-get install -y build-essential unzip wget python-dev git
|
||||||
RUN pip install "poetry==$POETRY_VERSION"
|
RUN pip install "poetry==$POETRY_VERSION"
|
||||||
|
|
||||||
WORKDIR /src
|
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 && \
|
RUN poetry export --only=main,docker --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
|
||||||
poetry export --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
|
|
||||||
RUN pip install --prefix=/runtime --force-reinstall -r requirements.txt
|
RUN pip install --prefix=/runtime --force-reinstall -r requirements.txt
|
||||||
|
|
||||||
FROM base as runtime
|
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 \
|
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 \
|
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 \
|
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
|
COPY --from=builder /runtime /usr/local
|
||||||
RUN playwright install chromium
|
|
||||||
ADD . /app/
|
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
|
ENV HOST=0.0.0.0
|
||||||
CMD ["python", "bot.py"]
|
CMD ["nb", "run"]
|
||||||
|
|
||||||
# vim: ft=dockerfile
|
# vim: ft=dockerfile
|
||||||
|
@ -14,7 +14,7 @@ ENV PYTHONFAULTHANDLER=1 \
|
|||||||
PATH="$PATH:/runtime/bin" \
|
PATH="$PATH:/runtime/bin" \
|
||||||
PYTHONPATH="$PYTHONPATH:/runtime/lib/python3.10/site-packages" \
|
PYTHONPATH="$PYTHONPATH:/runtime/lib/python3.10/site-packages" \
|
||||||
# Versions:
|
# 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 apt-get update && apt-get install -y build-essential unzip wget python3-dev git
|
||||||
RUN pip install "poetry==$POETRY_VERSION"
|
RUN pip install "poetry==$POETRY_VERSION"
|
||||||
|
|
||||||
@ -22,10 +22,7 @@ WORKDIR /src
|
|||||||
|
|
||||||
COPY pyproject.toml poetry.lock /src/
|
COPY pyproject.toml poetry.lock /src/
|
||||||
|
|
||||||
RUN poetry add "nonebot2[fastapi]" \
|
RUN poetry export --only=main,docker --without-hashes --no-interaction --no-ansi -f requirements.txt -o requirements.txt
|
||||||
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 pip install --prefix=/runtime --force-reinstall -r requirements.txt
|
RUN pip install --prefix=/runtime --force-reinstall -r requirements.txt
|
||||||
|
|
||||||
FROM base as runtime
|
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 \
|
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 \
|
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 \
|
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
|
COPY --from=builder /runtime /usr/local
|
||||||
RUN playwright install chromium
|
|
||||||
ADD . /app/
|
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
|
ENV HOST=0.0.0.0
|
||||||
CMD ["python", "bot.py"]
|
CMD ["nb", "run"]
|
||||||
|
|
||||||
# vim: ft=dockerfile
|
# 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"
|
expiringdict = "^1.2.1"
|
||||||
feedparser = "^6.0.2"
|
feedparser = "^6.0.2"
|
||||||
httpx = ">=0.16.1"
|
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-adapter-onebot = "^2.0.0"
|
||||||
nonebot-plugin-htmlrender = ">=0.2.0"
|
nonebot-plugin-htmlrender = ">=0.2.0"
|
||||||
nonebot-plugin-datastore = ">=0.6.2,<2.0.0"
|
nonebot-plugin-datastore = ">=0.6.2,<2.0.0"
|
||||||
@ -42,7 +42,7 @@ black = "^23.7.0"
|
|||||||
ipdb = "^0.13.4"
|
ipdb = "^0.13.4"
|
||||||
isort = "^5.10.1"
|
isort = "^5.10.1"
|
||||||
nonemoji = "^0.1.4"
|
nonemoji = "^0.1.4"
|
||||||
nb-cli = "^1.0.5"
|
nb-cli = "^1.2.8"
|
||||||
pre-commit = "^3.3.0"
|
pre-commit = "^3.3.0"
|
||||||
ruff = ">=0.0.278,<0.0.293"
|
ruff = ">=0.0.278,<0.0.293"
|
||||||
|
|
||||||
@ -57,6 +57,17 @@ pytest-mock = "^3.10.0"
|
|||||||
pytest-xdist = { extras = ["psutil"], version = "^3.1.0" }
|
pytest-xdist = { extras = ["psutil"], version = "^3.1.0" }
|
||||||
respx = "^0.20.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]
|
[tool.poetry.extras]
|
||||||
cli = ["anyio", "click", "typing-extensions"]
|
cli = ["anyio", "click", "typing-extensions"]
|
||||||
yaml = ["pyyaml"]
|
yaml = ["pyyaml"]
|
||||||
@ -66,8 +77,8 @@ all = ["anyio", "click", "typing-extensions", "pyyaml"]
|
|||||||
bison = "nonebot_bison.script.cli:main"
|
bison = "nonebot_bison.script.cli:main"
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["poetry>=1.0.0"]
|
requires = ["poetry-core>=1.4.0"]
|
||||||
build-backend = "poetry.masonry.api"
|
build-backend = "poetry.core.masonry.api"
|
||||||
|
|
||||||
[tool.pytest.ini_options]
|
[tool.pytest.ini_options]
|
||||||
markers = [
|
markers = [
|
||||||
@ -102,7 +113,12 @@ src_paths = ["nonebot_bison", "tests"]
|
|||||||
extra_standard_library = ["typing_extensions"]
|
extra_standard_library = ["typing_extensions"]
|
||||||
|
|
||||||
[tool.nonebot]
|
[tool.nonebot]
|
||||||
|
adapters = [
|
||||||
|
{ name = "OneBot V11", module_name = "nonebot.adapters.onebot.v11" },
|
||||||
|
]
|
||||||
plugins = ["nonebot_bison"]
|
plugins = ["nonebot_bison"]
|
||||||
|
plugin_dirs = ["extra_plugins"]
|
||||||
|
builtin_plugins = ["echo"]
|
||||||
|
|
||||||
[tool.pyright]
|
[tool.pyright]
|
||||||
reportShadowedImports = false
|
reportShadowedImports = false
|
||||||
@ -114,3 +130,8 @@ executionEnvironments = [
|
|||||||
] },
|
] },
|
||||||
{ root = "./" },
|
{ root = "./" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[tool.poetry.source]]
|
||||||
|
name = "offical-source"
|
||||||
|
url = "https://pypi.org/simple/"
|
||||||
|
priority="default"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user