From eab46652b182ac6fdd3ebb87cc89a8efb3c9b96a Mon Sep 17 00:00:00 2001 From: Renzhi Date: Fri, 20 Dec 2019 22:15:29 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=E5=88=A9=E7=94=A8docker=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=8A=A0=E9=80=9F=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 5 +++++ Dockerfile37 | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index 9e3882d..e3fc22b 100755 --- a/.dockerignore +++ b/.dockerignore @@ -5,5 +5,10 @@ **/*~ **/.DS_Store **/Thumbs.db +*.png .idea/ .git/ +.github/ +*.md +UnitTest/ +uml/ diff --git a/Dockerfile37 b/Dockerfile37 index d00eeab..8a6770a 100644 --- a/Dockerfile37 +++ b/Dockerfile37 @@ -9,7 +9,6 @@ echo 'deb http://mirrors.163.com/debian-security/ jessie/updates main non-free c RUN apt-get -y update -ADD . /usr/src/app WORKDIR /usr/src/app RUN wget -c https://dl.lancdn.com/landian/soft/chrome/m/77.0.3865.120_amd64.deb && \ @@ -28,11 +27,14 @@ unzip chromedriver_linux64.zip ENV DEBIAN_FRONTEND noninteractive ENV TZ Asia/Shanghai +COPY requirements.txt /usr/src/app/ ## install python requirements RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider --no-cache-dir -r requirements.txt RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +COPY . /usr/src/app + ## install ntpdate, not accept but saving code #RUN echo 'deb http://mirrors.163.com/debian/ jessie main non-free contrib \ # deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib \ @@ -43,5 +45,5 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone #EXPOSE 5010 -CMD [ "python", "run.py" ] +CMD [ "python", "run.py", "r" ] #ENTRYPOINT [ "python", "run.py" ] From 9b0dae464a1e22f6d6112bce22e6b3044c8fa986 Mon Sep 17 00:00:00 2001 From: Renzhi Date: Fri, 20 Dec 2019 22:56:29 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=9C=A8docker=E4=B8=AD?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E7=9A=84=E6=AD=A5=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 ++++++++++--------- docker-compose.yml | 32 +++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 8dd28cb..7fa31e0 100755 --- a/README.md +++ b/README.md @@ -62,15 +62,16 @@ positional arguments: operate r: 运行抢票程序, c: 过滤cdn, t: 测试邮箱和server酱,server酱 ``` - - 如果你的服务器安装了docker与docker-compose, 那么就可以通过`docker-compose`进行启动,`docker.sh`脚本对此进行了封装,可以通过如下命令进行启动 - - 1、`sudo ./docker.sh run` #创建一个镜像并启动容器,如果镜像已经创建过了会直接启动容器。 - - 2、`sudo ./docker.sh restart` #修改配置文件后,通过此名命令可重新加载容器运行 - - 3、`sudo ./docker.sh rm` #删除容器 - - 4、`sudo ./docker.sh drun` #后台运行容器 - - 5、`sudo ./docker.sh logs` #在后台运行时,通过此命令查看运行的内容 - - 注: 针对没有docker环境的同学提供了docker安装脚本(**centos7**) - - `sudo ./docker_install_centos.sh` - - ~~注: 若只有docker没有docker-compose. 可通过`pip install docker-compose`进行下载~~ + - 如果你的服务器安装了docker与docker-compose, 那么你可以忽略上面的所有步骤,直接按以下步骤操作,即可开始抢票: + - 前提条件: + - 请确认你安装的docker版本为18.09及以上: `docker -v` + - 请确认你安装的docker-compose版本为1.23.2及以上: `docker-compose -v` + - 请根据自己需要修改好配置文件:`TickerConfig.py` + - 请修改配置文件`TickerConfig.py`中的变量`AUTO_CODE_TYPE`和`HOST`,`AUTO_CODE_TYPE`改为`3`, HOST改为`"captcha:80"`(这里很重要,这是本地打码服务器的配置) + - 运行命令: + - 开始抢票:`docker-compose up --build -d` + - 停止抢票:`docker-compose down` + - 查看抢票log: `docker logs --follow ticket` #### 目录对应说明 - agency - cdn代理 diff --git a/docker-compose.yml b/docker-compose.yml index 9179411..0edc397 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,28 @@ version: "3" services: + #抢票服务 ticket: - image: 12306_ticket - build: . - # ports: - volumes: - - ./:/usr/src/app - # - /etc/localtime:/etc/localtime:ro - container_name: 12306ticket - privileged: true - + build: + context: . + dockerfile: ./Dockerfile37 + image: ticket:v1.2.004 + container_name: ticket + depends_on: + - captcha + networks: + - 12306network + restart: on-failure + #打码服务器 + captcha: + image: yinaoxiong/12306_code_server:amd64 #请根据需要修改image + environment: + - WORKERS=1 #gunicorn works 默认为1可以根据服务器配置自行调整 + container_name: captcha + networks: + - 12306network + restart: unless-stopped +networks: + 12306network: + driver: bridge From 565903e0f5c5633ba6c0d4fd914de82664703ad5 Mon Sep 17 00:00:00 2001 From: Renzhi Date: Sat, 21 Dec 2019 00:50:19 +0800 Subject: [PATCH 3/4] fix:python output non-buffered --- docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 0edc397..d84b20a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,8 @@ services: context: . dockerfile: ./Dockerfile37 image: ticket:v1.2.004 + environment: + - PYTHONUNBUFFERED=1 container_name: ticket depends_on: - captcha From 1d48e51a6b5b751a7f3204761e941a6aeec2f289 Mon Sep 17 00:00:00 2001 From: Renzhi Date: Sat, 21 Dec 2019 00:52:29 +0800 Subject: [PATCH 4/4] update: do update cdn list before run --- Dockerfile37 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile37 b/Dockerfile37 index 8a6770a..5c0930f 100644 --- a/Dockerfile37 +++ b/Dockerfile37 @@ -45,5 +45,5 @@ COPY . /usr/src/app #EXPOSE 5010 -CMD [ "python", "run.py", "r" ] +CMD [ "sh", "-c", "python run.py c && python run.py r" ] #ENTRYPOINT [ "python", "run.py" ]