为python爬虫docker镜像添加nodejs环境实现方法

 更新时间:2023年09月12日 08:38:09   作者: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环境的资料请关注脚本之家其它相关文章!

相关文章

  • 深入理解Python中的*重复运算符

    深入理解Python中的*重复运算符

    这篇文章主要介绍了深入理解Python中的*重复运算符,小编觉得还是挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • Python中循环后使用list.append()数据被覆盖问题的解决

    Python中循环后使用list.append()数据被覆盖问题的解决

    这篇文章主要给大家介绍了关于Python中循环后使用list.append()数据被覆盖问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • Python使用20行代码实现微信聊天机器人

    Python使用20行代码实现微信聊天机器人

    这篇文章主要介绍了Python使用20行代码实现微信聊天机器人,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python中用PIL库批量给图片加上序号的教程

    Python中用PIL库批量给图片加上序号的教程

    这篇文章主要介绍了Python中用PIL库批量给图片加上序号的教程,PIL库是Python中一个非常强大的处理图片的库,需要的朋友可以参考下
    2015-05-05
  • python实现随机梯度下降法

    python实现随机梯度下降法

    这篇文章主要为大家详细介绍了python实现随机梯度下降法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • 如何用python多次调用exe文件运行不同的结果

    如何用python多次调用exe文件运行不同的结果

    有个C++项目是读取配置参数文件并打印对应的结果,后来需要多次修改配置文件并运行,于是想到写个python脚本执行这一过程,今天通过本文给大家分享python多次调用exe文件运行不同的结果,感兴趣的朋友一起看看吧
    2023-05-05
  • Python中staticmethod和classmethod的作用与区别

    Python中staticmethod和classmethod的作用与区别

    今天小编就为大家分享一篇关于Python中staticmethod和classmethod的作用与区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Python 200行代码实现一个滑动验证码过程详解

    Python 200行代码实现一个滑动验证码过程详解

    这篇文章主要介绍了Python 200行代码实现一个滑动验证码过程详解,各种各样的验证码,比较高级的有滑动、点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文章大致说明下这些验证码的原理以及带大家实现一个滑动验证码
    2019-07-07
  • django定期执行任务(实例讲解)

    django定期执行任务(实例讲解)

    下面小编就为大家带来一篇django定期执行任务(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Python入门基础之数字字符串与列表

    Python入门基础之数字字符串与列表

    这篇文章主要给大家介绍了关于Python入门基础之数字字符串与列表的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论