背景介绍:

本项目使用Springboot编写服务端口,python实现爬虫任务,bash脚本完成任务调度。出于环境搭建过于繁琐的考虑,本项目希望采用容器化技术完成一键部署,简化操作流程。

主要内容:

本文主要介绍如何使用Docker进行环境的搭建和部署。

运行环境:

腾讯云轻量应用服务器 Ubuntu20.04

阿里云数据库mysql

  1. 安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

⚠️ **注意2375端口!**建议关闭Docker的远程操作api端口,以免服务器遭到劫持。

保护Docker的方式

  1. 寻找合适的基础镜像

由于本项目需要pythonjava的双重环境,所以我们在Dockerhub上寻找合适的镜像源。

这个库可以满足需求。

  1. 设置Dockerfile
# 获得一个base镜像 里面包含java和python3环境
FROM blindspotsolutions/jdk-python:v0.0.1-openjdk8u242-python3.7-slim-buster
# https://hub.docker.com/r/blindspotsolutions/jdk-python/tags# FROM jdk-python
# FROM python:3.6.9MAINTAINER chenE2000  # 作者WORKDIR /app  # 进入工作文件夹COPY requirements.txt .
# 安装python依赖,加载镜像源加速
RUN pip install -r requirements.txt -i https://pypi.doubanio.com/simple --trusted-host pypi.doubanio.comCOPY . .
EXPOSE 8888  # 暴露8888端口CMD ./start-all.sh  # 启动脚本
  1. 设置启动脚本

由于我们的项目启动需要Springboot作为后台,python实现爬虫,所以需要两行命令,但是查看官方文档:

It’s ok to have multiple processes, but to get the most benefit out of Docker, avoid one container being responsible for multiple aspects of your overall application. You can connect multiple containers using user-defined networks and shared volumes.

官方不提倡一个容器负责多个任务,但也存在解决方案(原文)

我们构建如下的启动脚本,并在Dockerfile的最后一行运行。

# start-all.sh 总任务脚本,开启多个任务
time=`date +%Y-%m-%d`# 开启爬虫定时任务
echo "0 3 * * * root /app/start-clawler.sh" >> /etc/crontab
# 开启java后台服务
java -jar ./RemindsMeOfElectricity.jar &# Wait for any process to exit
wait $!# Exit with status of process that exited first
exit $?

其中爬虫开启如下,将日志保存在容器中:

time=`date +%Y-%m-%d`# 注意路径,和Dockerfile中的WORKDIR有关系
python  /app/main.py > /app/logs/$time.log 2>&1 &
  1. 构建镜像
$ docker build -t reminds_me_of_electricity .
  1. 启动服务
$ docker run -d -p 8888:8888 reminds_me_of_electricity

相关命令:

进入正在运行的容器

$ sudo docker ps
$ sudo docker exec -it 775c7c9ee1e1 /bin/bash
删除过多的images
$ docker system prune -a
$ echo "* * * * * root hostname >> /tmp/tmp.txt" >> /etc/crontab

参考博客

https://docs.docker.com/engine/security/protect-access/#related-information
https://www.runoob.com/docker/docker-dockerfile.html
https://blog.csdn.net/weixin_42054155/article/details/90815393
https://cloud.tencent.com/developer/article/1334959
https://blog.csdn.net/qq_20042935/article/details/105043400
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/120017214
https://blog.csdn.net/mzc11/article/details/81842534
https://blog.csdn.net/weixin_36088159/article/details/113053044
https://docs.docker.com/config/containers/multi-service_container/

Docker部署爬虫实战相关推荐

  1. Docker部署爬虫

    安装docker yum install docker 启动docker service docker start 安装git yum install git 生成ssh key ssh-keygen ...

  2. 史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!!

    史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!! 部署jar 包方式: https://blog.csdn.net/weixin_45821811/article/d ...

  3. 【云原生之Docker实战】使用Docker部署Lsky Pro个人图床平台

    [云原生之Docker实战]使用Docker部署Lsky Pro个人图床平台 一.Lsky Pro介绍 1.Lsky Pro简介 2.Lsky Pro特点 二.检查宿主机系统版本 三.检查本地dock ...

  4. 【云原生之Docker实战】使用Docker部署家庭个人在线音乐平台

    [云原生之Docker实战]使用Docker部署家庭个人在线音乐平台 一.music-player介绍 1.music-player简介 2.music-player特点 二.检查dokcer状态 1 ...

  5. 【云原生之Docker实战】使用docker部署DokuWiki知识库系统

    [云原生之Docker实战]使用docker部署DokuWiki知识库系统 一.DokuWiki介绍 二.检查本地Docker环境 1.检查系统版本 2.检查docker版本 3.检查docker状态 ...

  6. 【云原生之Docker实战】使用Docker部署Snipe-It固定资产管理平台

    [云原生之Docker实战]使用Docker部署Snipe-It固定资产管理平台 一.Snipe-It介绍 二.检查本地docker环境 1.检查docker版本 2.检查docker状态 3.检查系 ...

  7. 【云原生之Docker实战】使用Docker部署ShowDoc文档工具

    [云原生之Docker实战]使用Docker部署ShowDoc文档工具 一.ShowDoc介绍 1.ShowDoc简介 2.ShowDoc功能 二.检查docker版本 三.检查docker状态 四. ...

  8. 【云原生之Docker实战】使用Docker部署Mindoc文档管理平台

    [云原生之Docker实战]使用Docker部署Mindoc文档管理平台 一.Mindoc介绍 1.Mindoc简介 2.Mindoc功能 二.检查宿主机系统版本 1.检查操作系统版本 2.检查系统内 ...

  9. 【云原生之Docker实战】使用Docker部署MrDoc个人在线文档系统

    [云原生之Docker实战]使用Docker部署MrDoc个人在线文档系统 一.MrDoc介绍 1.MrDoc简介 2.MrDoc特点 二.检查docker状态 1.检查docker版本 2.检查do ...

最新文章

  1. 值类型 与引用的 copy
  2. 计算机网络子网划分_子网划分和超网| 计算机网络
  3. 有量子计算机的山西高能小说,五本大神级高能热血小说,没看过也必定听说过 ,加入书架告别书荒!...
  4. atmega168p与328p_ATMEGA328P-MU产品说明
  5. 学习成功:中学生成就梦想的15堂必修课
  6. MySQL 优化---索引实战(三)
  7. scratch编程谷歌小恐龙游戏
  8. Magicodes.IE 2.7.0发布
  9. mac homebrew安装php,Mac Mojava 通过 homebrew 安装 PHP5.6 版本正确姿势
  10. # 数据结构---1.栈的实现
  11. android h5富文本编辑器,H5富文本编辑器的详细介绍
  12. 惠普HP LaserJet Pro M15a 打印机驱动
  13. 电子制造企业如何减少不必要的跨部门沟通,快速回复订单交期?
  14. IDS(入侵检测系统)简介
  15. PTA 习题5-2 使用函数求奇数和 (15分)
  16. Tekla如何使用参考模型?Tekla 20问,赶快收藏?
  17. android raw rgb 转换器,raw图像格式转换工具——Iridient Developer Mac
  18. ETL的灵魂:调度系统
  19. EXCEL将一列英文转换成大写或小写
  20. 仿照网易云界面做的Flask网页音乐播放器(豪华版)

热门文章

  1. su密码忘了,很简单的搞定方法
  2. 淘派上架预告 | 王灏作品 12.24 20:00开售
  3. 01 HTML、HTTP协议
  4. SPOJ KGSS Maximum Sum (线段树)
  5. 详解RDD基本概念、RDD五大属性
  6. 东北人的幽默,《红男绿女》中经典对白,看过的人都明白
  7. 一企一技术研发中心 山东一企一技术
  8. 微信小程序--查看变量类型的方法(简易)
  9. wsl Error: 0x80070003
  10. 【VBA】excel开启宏,打开开发者模式