経験的記憶(純粋な手作業)=>docker-compose導入およびscrapyd+scrapyd-deployアップロードコードピット


前言
5-6時間の穴を踏んで、いろいろなテストをしました.人がなくなる.でも結果はもう満足しました.この文章は正しいhttps://segmentfault.com/a/11...の完备と初BUG!
ピット1(scrapydサービスbind_address):
私が使っていたDocker(dockerを使わなかったときscrapydのプロファイルがデフォルトの0.0.0.0だったのを覚えています)でも、Dockerコンテナのデフォルトはbind 127.0.0.0.1(本当にf--k..何時間も見つけられませんでした)です.dockerを使っていたら、Docker同級ディレクトリの下にdefault_を新規作成してください.scrapyd.confは、次の構成に書き込まれます(迷わず、すべてコピーすればいいです):
[scrapyd]
eggs_dir    = eggs
logs_dir    = logs
items_dir   =
jobs_to_keep = 5
dbs_dir     = dbs
max_proc    = 0
max_proc_per_cpu = 4
finished_to_keep = 100
poll_interval = 5.0
bind_address = 0.0.0.0
http_port   = 6800
debug       = off
runner      = scrapyd.runner
application = scrapyd.app.application
launcher    = scrapyd.launcher.Launcher
webroot     = scrapyd.website.Root

[services]
schedule.json     = scrapyd.webservice.Schedule
cancel.json       = scrapyd.webservice.Cancel
addversion.json   = scrapyd.webservice.AddVersion
listprojects.json = scrapyd.webservice.ListProjects
listversions.json = scrapyd.webservice.ListVersions
listspiders.json  = scrapyd.webservice.ListSpiders
delproject.json   = scrapyd.webservice.DeleteProject
delversion.json   = scrapyd.webservice.DeleteVersion
listjobs.json     = scrapyd.webservice.ListJobs
daemonstatus.json = scrapyd.webservice.DaemonStatus

最後にDockerfileで最後に書き込みます(状況によって異なります.人によってディレクトリ構造が異なります)
COPY default_scrapyd.conf /usr/local/lib/python3.6/site-packages/scrapyd/default_scrapyd.conf

ピット2(docker-compose:のcommandマルチコマンド問題)
scrapydの導入には2つのステップが必要です.
  • まずscrapydサービス(scrapydコマンドでOK)
  • をオンにします.
  • 爬虫プログラムをscrapyd-deployを介してscrapydサービス上の
  • にプッシュする
    明らかに:2は1に依存している.
    エラー解決:
    ただし、docker-compose command:コマンドは1つしか実行できません.私は常識に従ってN種類の思想を使って彼に多くの命令を支持させたいと思っています.
  • 最初は&&
  • 用shスクリプト
  • この命令は最もでたらめだ...ネット上の千編一律のブログ.80パーセントは互いにパクリしている.△それから本当に使いました..

  • 最もでたらめな命令は以下の通りです:(私はずっと窃喜して、解決方法を見つけたと思って、ずっとこの命令を軸にしてデバッグして、テストします...)
    #    command:
    #      - /bin/bash 
    #      - -c 
    #      - |
    #        scrapyd 
    #        scrapyd-deploy Cython_lin -p Baidu

    このコマンドには2つの結果があります(この2つの結果はまだtmがランダムです.生には恋がありません):
  • scrapydが先に実行され、直接詰まっています.後続コマンドが無効になりました(ランダム起動順序の問題は&でも解決できません)
  • scrapyd-deploy Cython_lin-p Baidu先実行(直接エラーを報告して、scrapydがまだ起きていないと思っています)
  • ここまで::::::::::私の上で言ったのはすべて间违った方式です!!!(もう少しで木が死ぬところだった.docker-composeファイルの内部でコマンドが1つしか実行できない以上.外で実行しよう!!)△思想が絶望的に硬直した私は、今度は本当に希望を見て、曙光を見た.
    正しい解決方法:
    docker-compose.ymlファイルには次のように書かれています.
    command: scrapyd

    次に、終了を保存して実行します.
    docker-compose up -d
    #       scrapyd    ,      scrapy-deploy (       )

    次の手順に従います.
    docker-compose exec crawl  scrapyd-deploy Cython_lin -p Baidu
    
    
        !    !(docker-compose       ):
        docker-compose exec        
        docker-compose run          (           (          ))

    終わりの言葉
    いくつかの間違いは小さいかもしれませんが、疑いが多くなると、頭の中に問題を解決する分岐点がたくさん現れます.そして机械排BUG、最终生无可恋...実際には、まず落ち着いて、集中して、音を決めてみてはいかがでしょうか.バグを探せ!!