网站怎么做排行榜,所有网页游戏网址,广州通app下载,近期热点新闻事件及评论目录 一、背景二、能力三、核心流程图四、制作镜像1.资源清单2.Dockerfile3.制作镜像 五、启动测试 一、背景 近几年我们线下的创业团队已从零到一开发过好几个小程序项目#xff0c;都是和体育相关。其中生成海报分享图片好像都是不可或缺的功能。之前的项目老板给的时间都比… 目录 一、背景二、能力三、核心流程图四、制作镜像1.资源清单2.Dockerfile3.制作镜像 五、启动测试 一、背景 近几年我们线下的创业团队已从零到一开发过好几个小程序项目都是和体育相关。其中生成海报分享图片好像都是不可或缺的功能。之前的项目老板给的时间都比较有限这个功能都是在服务器上安装python3.7.0环境然后直接启动脚本。这样做的弊端是每次都的重新部署pythonchromeseleniumoss2fastapi这样的一套环境太繁琐。故最近制作了一个包含上面环境的镜像下面是核心制作步骤供大家参考。 其中pythonchromeseleniumoss2fastapi部署参考我这篇文档:《Python三Linux部署Python项目(旧版本chromeseleniumoss2fastapi环境)》 二、能力
Python截图上传OSS
三、核心流程图
四、制作镜像
1.资源清单
名称描述谷歌浏览器98.0.4758.102下载地址https://www.chromedownloads.net/chrome64linux/谷歌驱动chromedriver下载地址https://chromedriver.storage.googleapis.com/index.html?path98.0.4758.102/宋体配置songti.ttf载地址提取码zzxlhttps://pan.baidu.com/s/1vHP0lTFO8692t5BfYV-kbAmain.pypython截图代码requirement.txtpython环境
2.Dockerfile Dockerfile # 设置基础镜像为 Python 3.7
FROM python:3.7# 在确认文件存在且文件名正确的情况下可解开下行注释解决中文乱码问题
COPY songti.ttf /usr/share/fonts/# 安装一些依赖(用于下载谷歌)
RUN apt-get update \apt-get install -y wget gnupg2# 安装 Google Chrome# 下载并设置 chromedriver
RUN wget -O /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/98.0.4758.102/chromedriver_linux64.zip
RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
RUN rm /tmp/chromedriver.zip
RUN chmod x /usr/local/bin/chromedriver# 设置 Chrome 在 Headless 模式下运行
ENV CHROME_BIN/usr/bin/google-chrome-stable
ENV CHROME_DRIVER/usr/local/bin/chromedriver# 设置工作目录
WORKDIR /code# 安装 Python 依赖
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt# 拷贝代码
COPY ./app /code/app
EXPOSE 29997# 运行命令
CMD [uvicorn, app.main:app, --reload, --host, 0.0.0.0, --port, 29997]main.py # !/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import timeimport oss2
from fastapi import FastAPI
from pydantic import BaseModel
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsapp FastAPI()class Item(BaseModel):url: strpic_name: strdef get_image(url, pic_name):print(python版本号 sys.version)chrome_options Options()chrome_options.add_argument(--no-sandbox)chrome_options.add_argument(--disable-dev-shm-usage)chrome_options.add_argument(--disable-extensions)chrome_options.add_argument(--headless)driver webdriver.Chrome(executable_path./chromedriver, chrome_optionschrome_options)# 打开网页driver.get(url)# driver.maximize_window()# 加延时 防止未加载完就截图time.sleep(1)# 用js获取页面的宽高如果有其他需要用js的部分也可以用这个方法width driver.execute_script(return document.documentElement.scrollWidth)height driver.execute_script(return document.documentElement.scrollHeight)# 将浏览器的宽高设置成刚刚获取的宽高driver.set_window_size(width, height)time.sleep(1)# 阿里云主账号AccessKey拥有所有API的访问权限风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维请登录 https://ram.console.aliyun.com 创建RAM账号。auth oss2.Auth(你的ossAccessKeyId, 你的ossAccessKeySecret)# Endpoint以杭州为例其它Region请按实际情况填写。bucket oss2.Bucket(auth, http://oss-cn-beijing.aliyuncs.com, athletic)bucket.put_object(ueditor/jsp/upload/share/image/ pic_name, driver.get_screenshot_as_png())driver.quit()return_url https://你的OSS域名/ueditor/jsp/upload/share/image/ pic_nameprint(图片地址 return_url)return return_urlapp.post(/poster)
def calculate(request_data: Item):print(请求地址 request_data.url)return get_image(request_data.url, request_data.pic_name)if __name__ __main__:import uvicornuvicorn.run(appapp,host0.0.0.0,port29997,workers1)
你需要替换python截图代码中的OSS配置部分 requirement.txt oss22.15.0
selenium3.3.1
pydantic1.10.7
fastapi0.95.0
uvicorn0.22.0
urllib32.0.53.制作镜像 制作镜像 docker build -t python-screenshot-tool:1.0.0 .启动容器 docker run -d --name python-screenshot-tool -p 29997:29997 python-screenshot-tool:1.0.0安装谷歌浏览器 到这一步就只差在docker容器中安装谷歌浏览器了。 进入docker容器 docker exec -it -u root python-screenshot-tool bash安装apt-get环境 apt-get -f install安装谷歌 dpkg -i 98.0.4758.102-google-chrome-stable_current_amd64.deb 将docker容器制作带有谷歌环境的镜像 docker commit -a zhuzixin -m python截图工具 74bb5e9bd607 python-screenshot-tool:1.0.1保存镜像 docker save ebcc9bfbd418 -o python-screenshot-tool.tar.gz 五、启动测试
postman调用测试 返回图片地址访问 到这里镜像就算是制作完成了如果你想跳过繁琐的制作镜像过程直接获取镜像也可以联系我。