我是在windows 10系统下通过docker构建成功的,我遇到的问题,不一定在其它电脑环境上也会出现,所以我的构建步骤也不一定是绝对正确的,仅供参考,互相学习,如果有何不对的地方,请多多斧正。
以下是构建过程:
1.安装docker环境
docker环境的安装参考菜鸟教程https://www.runoob.com/docker/windows-docker-install.html
打开windows系统的Hyper-V功能,此步完成后要重启一下电脑
重启后去docker官网下载 Docker Desktop
这一步需要输入Docker Hub的账号密码,去注册一个即可
安装过程就按照菜鸟教程,在此不再叙述
安装之后,查看一下docker版本和docker-compose版本
2.克隆12306项目到本地
代码Git客户端,克隆项目到本地
3.docker构建打码服务器
打码服务器的镜像文件在Docker Hub https://hub.docker.com/r/yinaoxiong/12306_code_server
> docker pull yinaoxiong/12306_code_server
pull到本地后,部署镜像
构建完毕后,查看运行的容器,会看到红框的那个容器,即为打码服务容器,端口8080
4.构建12306项目
首先要去12306项目根目录中,修改TickerConfig.py文件,按照注释设置自己要抢票的时间,车次,日期等信息。
其中有几个地方需要着重注意的:
设置本地打码服务地址
这个地址即我们第三步docker构建的打码服务器
设置RAIL_EXPIRATION、RAIL_DEVICEID的值
打开浏览器,按F12, 然后打开12306的网站,选择Network页签,找到index.html文件,在右侧Headers那个地方,找到cookie的值,里面就是要设置的RAIL_EXPIRATION、RAIL_DEVICEID的值
其它的设置按照自己的需要设置即可
TickerConfig.py文件设置完毕之后,按照下面的命令构建项目(开始抢票),停止项目(停止抢票),查看程序日志,即刷票信息(查看抢票)
开始抢票:docker-compose up --build -d
停止抢票:docker-compose down
查看抢票log: docker logs --follow ticket
5.构建12306遇到的问题
在执行docker-compose up --build -d
构建项目,会遇到下面的问题:
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='pypi.tuna.tsinghua.edu.cn', port=443): Read timed out. ERROR: Service 'ticket' failed to build: The command '/bin/sh -c pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider --no-cache-dir -r requirements.txt' returned a non-zero code: 2
项目issues https://github.com/testerSunshine/12306/issues/406
我遇到相同的报错,原因是项目中的Dockerfile文件中,第一行设置的python版本号与我本地的版本号对应不上,我重新设置了版本号,再次 docker-compose up --build -d 重新构建就OK了。
我的python版本号是 3.2.4