Docker - docker를 통해 scrapyd 서비스를 패키지화하고 시작
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"]
[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분 정도 업로드 완료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.