From b87cab8a2106c612878d764d8eac1d79a8560941 Mon Sep 17 00:00:00 2001 From: rnet Date: Tue, 4 Jun 2024 10:59:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8docker=E4=B8=AD=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20#4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile.base | 15 +++++++++++++++ Dockerfile.example | 8 ++++++++ README.md | 45 +++++++++++++++++++++++++++++++++++++++++++-- package.json | 4 ++-- 4 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 Dockerfile.base create mode 100644 Dockerfile.example diff --git a/Dockerfile.base b/Dockerfile.base new file mode 100644 index 0000000..24ab869 --- /dev/null +++ b/Dockerfile.base @@ -0,0 +1,15 @@ +FROM ubuntu:20.04 +MAINTAINER pysunday + +ENV LANG C.UTF-8 +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +RUN apt-get update && apt-get install -y vim curl git software-properties-common \ + build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev pkg-config +RUN add-apt-repository ppa:deadsnakes/ppa && apt-get update \ + && apt-get install -y python3.12 python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev \ + && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 \ + && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 2 +RUN apt-get install -y nodejs npm && npm install -g n +RUN n stable +RUN npm install -g node-gyp diff --git a/Dockerfile.example b/Dockerfile.example new file mode 100644 index 0000000..486a6b5 --- /dev/null +++ b/Dockerfile.example @@ -0,0 +1,8 @@ +# FROM pysunday/sdenv_base:arm64 +# FROM pysunday/sdenv_base:x86_64 + +RUN git clone https://github.com/pysunday/sdenv.git +WORKDIR /sdenv +RUN npm i + +ENTRYPOINT ["/usr/local/bin/node"] diff --git a/README.md b/README.md index a50529b..b7edaca 100644 --- a/README.md +++ b/README.md @@ -45,15 +45,56 @@ const { jsdomFromText, jsdomFromUrl, browser } = require('sdenv'); ### 样例代码运行 -clone项目仓库后执行依赖安装`npm i`,确保依赖安装成功后即可运行example目录下的样例文件了。 - 注意:样例代码仅供参考,作者建议使用npm包方式使用sdenv框架! +#### 源码方式 + +clone项目仓库后执行依赖安装`npm i`,确保依赖安装成功后即可运行example目录下的样例文件了。 + 1. 运行本地代码:[use-local](./example/use-local/README.md) ![样例调用](https://github.com/pysunday/sdenv/blob/main/static/example-use-local.png) 2. 运行网站代码:[use-remote](./example/use-remote/README.md) ![样例调用](https://github.com/pysunday/sdenv/blob/main/static/example-use-remote.png) +#### docker方式 + +提供docker方式运行样例代码. + +首先执行`uname -a`后查看架构类型,支持`arm64`和`x86_64` + +如果是`arm64`架构则执行命令: + +1. 运行本地代码:`docker run --rm pysunday/sdenv:arm64 ./example/use-local/index.js` +2. 运行网站代码:`docker run --rm pysunday/sdenv:arm64 ./example/use-remote/index.js` + +如果是`x86_64`架构则执行命令: + +1. 运行本地代码:`docker run --rm pysunday/sdenv:x86_64 ./example/use-local/index.js` +2. 运行网站代码:`docker run --rm pysunday/sdenv:x86_64 ./example/use-remote/index.js` + +### docker打包 + +可以参考项目的`Dockerfile.example`文件,通过命令`uname -a`查看架构类型,然后取消对应的`FROM`语句注释,修改文件名为`Dockerfile`,如arm64架构的Dockerfile文件内容: + +```docker +FROM pysunday/sdenv_base:arm64 + +RUN git clone https://github.com/pysunday/sdenv.git +WORKDIR /sdenv +RUN npm i + +ENTRYPOINT ["/usr/local/bin/node"] +``` + +最后执行命令`docker build -t pysunday/sdenv ./`生成容器 + +运行容器内的样例代码与前面类似: + +1. 运行本地代码:`docker run --rm pysunday/sdenv ./example/use-local/index.js` +2. 运行网站代码:`docker run --rm pysunday/sdenv ./example/use-remote/index.js` + +**如果需要在docker内调试代码,作者建议使用npm包的方式使用sdenv,然后通过映射方式调用docker** + ## API sdenv设计极其简单,它的核心API只有一个,即browser! diff --git a/package.json b/package.json index b760a62..890d855 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sdenv", - "version": "0.2.1", + "version": "0.2.2", "description": "补环境框架", "directories": { "test": "test" @@ -20,7 +20,7 @@ "homepage": "https://github.com/pysunday/sdenv#readme", "bugs": "https://github.com/pysunday/sdenv/issues", "author": "pysunday", - "license": "ISC", + "license": "BSD 3-Clause", "dependencies": { "bindings": "^1.5.0", "canvas": "^2.11.2",