我是在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