为python爬虫docker镜像添加nodejs环境实现方法
作者:ponponon
这篇文章主要为大家介绍了为python爬虫docker镜像添加nodejs环境实现方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
旧方法
过去会使用类似 curl -sL https://deb.nodesource.com/setup_16.x | bash -
这样的方式添加 source 源,然后在使用 apt 安装 nodejs
但是这个方法最近不行了,运行会有警告
root@f51e70203b5b:/# curl -sL https://deb.nodesource.com/setup_16.x | bash - ================================================================================ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ================================================================================ SCRIPT DEPRECATION WARNING This script, located at https://deb.nodesource.com/setup_X, used to install Node.js is deprecated now and will eventually be made inactive. Please visit the NodeSource distributions Github and follow the instructions to migrate your repo. https://github.com/nodesource/distributions The NodeSource Node.js Linux distributions GitHub repository contains information about which versions of Node.js and which Linux distributions are supported and how to install it. https://github.com/nodesource/distributions SCRIPT DEPRECATION WARNING ================================================================================ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ================================================================================ TO AVOID THIS WAIT MIGRATE THE SCRIPT Continuing in 60 seconds (press Ctrl-C to abort) ... ^C
大概意思就是,这种方式已经 out了,nodejs 叫你别这么用了
nodejs最新推荐的方式是
https://github.com/nodesource/distributions#debian-versions
需要更多命令了,而且大家知道,因为「邪恶长城」的存在,这非常不适合大陆宝宝
缺点
- 网络问题,不适合大陆宝宝
- 变来变去,早晚要吃亏
那么有没有更加适合大陆宝宝并且更加永恒不变的打包安装 nodejs 方式呢?
当然有
因为 python 的 docker 镜像是基于 debian 打包的
debian 的仓库里面就有 nodejs
但是别选 buster (debian10),因为这款远古时期的 debian 10 buster 仓库里面的 nodejs 是 12 版本的,狗见了都摇头
建议选择 bookworm ,也就是 debian12 的,热乎,今年刚发布。仓库里面带的 nodejs 版本是 18,很新鲜
Dockerfile 示例
FROM python:3.10.13-bookworm # 改变pip缓存目录 # RUN pip config set global.cache-dir /pip/cache # 使用 aliyun 内网镜像源 # RUN (echo "deb http://mirrors.cloud.aliyuncs.com/debian/ buster main non-free contrib" > /etc/apt/sources.list) RUN (apt-get update) && (apt-get upgrade -y) # 安装依赖工具,default-libmysqlclient-dev 是 mysqlclient 的依赖 RUN (apt-get install -y vim wget httpie netcat-openbsd htop curl gcc make g++ default-libmysqlclient-dev) # 安装 node 环境 RUN (apt install -y nodejs npm) && (npm install -g crypto-js @babel/core @babel/cli @babel/preset-env)
当然,上面的 还没有把 apt 镜像源换成大陆的
说更加完整的是下面这样
FROM python:3.11.5-bookworm # 为什么要删除这些东西? 参考:[为什么我把 debian12 的 apt 源替换为上海交大之后,还会连接 debian 官方源?](https://segmentfault.com/q/1010000044193707) RUN rm -rf /etc/apt/sources.list.d/* RUN echo "deb http://mirror.sjtu.edu.cn/debian bookworm main non-free contrib" > /etc/apt/sources.list RUN (apt-get update) && (apt-get upgrade -y) # 安装依赖工具,default-libmysqlclient-dev 是 mysqlclient 的依赖 RUN (apt-get install -y vim wget httpie netcat-openbsd htop curl gcc make g++ default-libmysqlclient-dev) # 安装 node 环境 RUN (apt install -y nodejs npm) && (npm install -g crypto-js @babel/core @babel/cli @babel/preset-env)
小结
- 要用 debian12,也就是 bookworm。不建议用 debian10 和debian11,因为他两自带的都是 nodejs12,太古老了,毫无意义。
- 而 debian12 的 nodejs18 足够 hold 大多数场景
- 记得替换 apt 换为大陆的,不然在大陆的你,受不了
以上就是为python爬虫docker镜像添加nodejs环境实现方法的详细内容,更多关于python docker镜像nodejs环境的资料请关注脚本之家其它相关文章!