Docker - docker를 통해 scrapyd 서비스를 패키지화하고 시작

5557 단어
전언
scrapyd를 정상적으로 시작할 수 있고 외부에서 접근할 수 있는 간단한 서비스 시작을 시도합니다.
프로젝트 패키징과 데이터 볼륨 활용을 다음 기사로 장기화하고 다시 작성할 때는 이 몇 가지를 결합하여 완전한 프로젝트를 실행해야 합니다.
docker 설치
로컬 시스템에 docker를 설치하려면 명령을 입력하기만 하면 됩니다.
sudo apt-get install docker-ce

docker(ce는 커뮤니티 무료 버전)를 설치하고 명령을 통해 다음을 수행할 수 있습니다.
sudo docker images

docker가 완전하게 설치되어 있고 실행 중인지 확인할 수 있습니다
프로젝트 기본 지식
scrapyd는 scrapy 공식 팀에서 사용자에게 scrapy 프로젝트를 발표하는 웹 서비스로 pip install를 통해 설치한 후 scrapyd를 입력하면 시작할 수 있지만 외부 접근이 필요하면bindadress 설정 0.0.0.0
docker를 설치한 후 Dockerfile과 docker-compose를 작성해야 합니다.yml에서 docker 렌즈를 만듭니다.sudo nano를 통해 Dockerfile을 작성하는 빈 디렉토리를 만들었습니다.
FROM python:3.6
MAINTAINER ranbos
RUN pip install scrapyd \
&& pip install scrapyd-client
COPY default_scrapyd.conf /usr/local/lib/python3.6/site-packages/scrapyd/
CMD ["scrapyd"]

  • python 기반 3.6
  • 저자ranbos
  • scrapyd를 설치하고 이어서 scrapyd-client
  • 를 설치한다.
  • 네이티브에서 수정된default 복제scrapyd.conf에서 docker python 렌즈에 있는/usr/local/lib/python 3.6/site-packages/scrapyd/디렉터리에서 원래 설정 파일을 덮어쓰고 외부 접근을 실현합니다(안에서bind 주소만 변경하고 127.0.0.1을 0.0.0.0으로 변경합니다)
  • 마지막으로 scrapyd 명령을 실행하여 서비스를 시작합니다
  • 변경된defaultscrapyd.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
    

    왜 복사된 경로가/usr/local/lib/python인지6/site-packages/scrapyd/는?
    컨테이너가 시작된 후 명령을 통해 다음을 수행합니다.
     sudo docker exec -it a86  bash
    
    

    그 중에서 a86은 거울 id로 용기 내부로 들어갈 수 있고 그 안에서 통과할 수 있다.
    pip show scrapyd
    

    scrapyd의 설치 경로를 찾을 수 있습니다.
    Dockerfile을 작성한 후 docker-compose를 작성해야 합니다.yml 파일:
    version: '3'
    services:
    
      web:
        build: .
        ports:
         - "6800:6800"
    

    compose 버전을 지정하고 서비스를 웹으로 지정합니다. 현재 디렉터리에 맵 포트를 구축하면 외부 포트에 scrapyd 서비스 포트 6800에 오픈됩니다.
    Dockerfile 및 docker-compose.yml 파일을 작성한 후 명령을 통해 다음을 수행합니다.
    sudo docker-compose up
    

    Dockerfile의 설정에 따라 파일을 다운로드하고 복사한 다음docker-compose.yml의 설정은 렌즈를 구축하고 실행합니다.
    그림 설명 입력
    용기가 정상적으로 작동하고 외부에서도 scrapyd 서비스에 접근할 수 있습니다.
    다음 부팅
    이번 패키지 구축이 끝났습니다. 그럼 다음은요?
    명령을 통해 다음을 수행합니다.
    sudo docker-images
    

    로컬 이름이 dockerscrapyd 인 것을 볼 수 있습니다.웹의 거울, 바로 방금 내가 구축한 거울
    그런 다음 명령을 사용합니다.
    sudo docker run -p 6800:6800  dockerscrapyd_web
    

    여기서 dockerscrapyd웹은 용기의 이름입니다. 다시 시작되는 것을 볼 수 있습니다.
    클라우드 창고에 저장
    구축된 렌즈는 명령을 통해 시작할 수 있지만 최종 목적은 아니다. 최종 목적은 클라우드 창고에 넣고 필요할 때 바로run이나pull로 사용할 수 있도록 하는 것이다.
    Docker 공식은 사람들에게 이러한 서비스를 제공했는데 주소는hub이다.docker.com
    로그인 후create를 클릭
    그림 설명 입력
    정보를 입력한 후 구름 렌즈를 만듭니다
    그림 설명 입력
    명령으로 docker에 로그인하려면 다음과 같이 하십시오.
    sudo docker login
    

    프롬프트에 따라 사용자 이름과 암호를 입력하면 됩니다. 로그인이 성공하면 메시지가 다시 전송됩니다.
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: ranbovideo
    Password: 
    Login Succeeded
    
    

    그런 다음 명령을 사용하여 미러를 커밋합니다.
    sudo docker push /:
    

    사용자 이름
    창설된 창고 이름을 가리키며 그림으로 예를 들다.
    그림 설명 입력
    다음 릴리즈에서 tag 를 실행하여 명령을 예로 들 수 있습니다.
    sudo docker push dockerscrapyd_web
    

    만약 이런 명령이라면, 직접 거울 이름을 입력해서는 안 된다
    리턴 메시지가 표시됩니다.
    denied: requested access to the resource is denied
    
    

    이전 형식에 따라 미러 tag 및 이름을 변경하려면:
    sudo docker tag dockerscrapyd_web ranbovideo/scrapyd
    

    그리고 sudo docker images로 변경이 성공했는지 확인할 수 있습니다.미러가 있는 경우 명령을 사용하여 업로드합니다.
    sudo docker push ranbovideo/scrapyd:latest
    

    한 걸음 한 걸음 카메라를 올리는 걸 보실 수 있을 거예요.
    그림 설명 입력
    주의: Docker Hub 밀어넣기 속도가 느리고 인내심을 가지고 기다리면 실패할 가능성이 높습니다. 나중에 밀어넣기를 끊습니다. (하지만 이미 밀어넣은 것은 보류합니다. 보존 시간이 얼마나 걸릴지 모르기 때문에 아까 명령을 통해 계속 올릴 수 있습니다. 왜냐하면 한 개의 거울이 몇 백 M이 될 수 있습니다. (왜 그렇게 큰지 모르겠습니다. 700여 M. 저는python 3.6 거울을 봤는데 690여 M이 있는데 아마도 그것일 것입니다)그렇게 쉽지가 않아요.
    최종 검사
    push에서 클라우드 쪽이 정상적이고 정확한지 확인하기 위해서 로컬 이미지를 모두 삭제한 다음 클라우드 쪽에서 로컬 실행으로 pull을 다운로드합니다
    아리운 창고
    아리윈도 많은 사용자에게 창고를 제공하여 공유할 수도 있고 사유 현지 창고를 신청할 수도 있다. 게다가 멀리 외국에 있는 허브 도커보다 속도가 빠를 것이다. 또한 아리윈 ECS에 직접 배치하면 끌어당기는 속도가 매우 빠르고 인터넷 데이터도 계산하지 않아서 체험할 수 있다.
    $ sudo docker login --username=m152********@163.com registry.cn-beijing.aliyuncs.com
    $ sudo docker tag [ImageId] registry.cn-beijing.aliyuncs.com/ranbos/scrapyd:[     ]
    $ sudo docker push registry.cn-beijing.aliyuncs.com/ranbos/scrapyd:[     ]
    

    700m가 넘는 데이터를 해외 서버에 업로드하느라 렉이 걸려서 Aliyun의 개인 창고에 넣었습니다.
    그림 설명 입력
    정말 빠르네요 할 말 없이 767M 미러 2분 정도 업로드 완료

    좋은 웹페이지 즐겨찾기