부두 노동자 경주ภายใต้ 네트워킹ของ 용기.อื่น
ประเด็นของโพสต์นี้คือ กำลังพยายามเอามันไปรันภายใต้ 부두 노동자ซึ่งไม่มี 크롬อยู่ในนั้น อย่างไรก็ตาม 크롬มีวิธีให้เชื่อมต่อหามันผ่าน 아득히 멀었어โดยใช้ Chrome DevTools Websocket 끝점
ประเด็นต่อมา เราต้องรัน 크롬 도금 무두ซึ่งเป็น 크롬 합금 엔진แบบไม่ต้องติดตั้ง 크롬 응용นั่นเอง ดีที่มีคนทำ docker 이미지เอาไว้แล้วที่นี่ https://hub.docker.com/r/chromedp/headless-shell/
ดังนั้นเราจะใช้งาน 무두포탄ก็รันผ่าน 부두 노동자แบบนี้
docker run -d -p 9222:9222 --rm --name headless-shell chromedp/headless-shell
ต่อมาผมจะลองเล่นโค้ดตัวอย่างของ chromedpจากโค้ดนี้ https://github.com/chromedp/examples/blob/master/remote/main.go // Command remote is a chromedp example demonstrating how to connect to an
// existing Chrome DevTools instance using a remote WebSocket URL.
package main
import (
"context"
"flag"
"log"
"github.com/chromedp/chromedp"
)
func main() {
devtoolsWsURL := flag.String("devtools-ws-url", "", "DevTools WebSsocket URL")
flag.Parse()
if *devtoolsWsURL == "" {
log.Fatal("must specify -devtools-ws-url")
}
// create allocator context for use with creating a browser context later
allocatorContext, cancel := chromedp.NewRemoteAllocator(context.Background(), *devtoolsWsURL)
defer cancel()
// create context
ctxt, cancel := chromedp.NewContext(allocatorContext)
defer cancel()
// run task list
var body string
if err := chromedp.Run(ctxt,
chromedp.Navigate("https://duckduckgo.com"),
chromedp.WaitVisible("#logo_homepage_link"),
chromedp.OuterHTML("html", &body),
); err != nil {
log.Fatalf("Failed getting body of duckduckgo.com: %v", err)
}
log.Println("Body of duckduckgo.com starts with:")
log.Println(body[0:100])
}
โดยเอามาใส่ 가자.국방부เพื่อจัดการ 싸다ให้ ซึ่ง 가자.국방부มีโค้ดแบบนี้อยู่module example-chromedp-remote
go 1.16
require github.com/chromedp/chromedp v0.7.1
เสร็จแล้วก็สร้าง Dockerfileให้มันแบบนี้FROM golang:1.16.4-alpine as builder
WORKDIR /app
COPY go.mod /app
COPY main.go /app
RUN go mod download
RUN go build -o app
FROM alpine
COPY --from=builder /app/app /app
ENTRYPOINT ["/app"]
จากนั้นทำการ 부두 건설 노동자ด้วยคำสั่งdocker build -t example-chromedp-remote .
สุดท้าย เราจะรัน chromedp 리모컨 예โดยส่ง ws-urlของ 끝이 없다ไปเป็น 선택권ให้มัน ส่วนวิธีหา ws-urlนั้นทำแบบนี้curl 127.0.0.1:9222/json/version
{
"Browser": "Chrome/90.0.4430.93",
"Protocol-Version": "1.3",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36",
"V8-Version": "9.0.257.23",
"WebKit-Version": "537.36 (@4df112c29cfe9a2c69b14195c0275faed4e997a7)",
"webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/68424ed8-a10a-4633-9618-f93b443e0aa9"
}
เราจะเอา 통합 리소스 포지셔닝 주소ตรง "webSocketDebuggerUrl"
ไปใช้งานนั่นเองต่อไปก็สั่งรัน chromedp 리모컨 예แบบนี้
docker run --rm --network="container:headless-shell" example-chromedp-remote -devtools-ws-url="ws://127.0.0.1:9222/devtools/browser/68424ed8-a10a-4633-9618-f93b443e0aa9"
จุดที่ทำให้รันโดยเชื่อมต่อไปให้มันเป็น 네트워킹เดียวกัน 지적 재산권.เดียวกันได้คือ 옵션--network="container:headless-shell"
นั่นเอง 도안มันคือมี container:
ด้านหน้า ตามด้วยชื่อ 용기.ที่จะเอาไปเชื่อมต่อ (참고문헌: https://docs.docker.com/engine/reference/run/#network-container)แถมท้าย ถ้าใช้ docker composeแทนที่จะรันเองตรงๆนั้น จะใช้ 설정 키ที่ชื่อ 네트워크 모드แต่ว่าแทนที่จะกำหนดชื่อ 용기.ตรงๆ เราใช้ชื่อ 서비스แทนได้โดยใช้ 접두어
service:
ตามด้วยชื่อ 서비스ตัวอย่างเช่น---
version: "3.8"
services:
chrome-headless:
image: "chromedp/headless-shell"
ports:
- "9222:9222"
example-chromedp-remote:
build:
context: .
network_mode: "service:chrome-headless"
จากนั้นก็สั่งรัน 크롬 도금 무두ผ่าน docker composeแบบนี้docker compose up -d chrome-headless
แล้วก็รัน chromedp 리모컨 예แบบนี้docker compose run --rm example-chromedp-remote -devtools-ws-url="ws://127.0.0.1:9222/devtools/browser/cdaa6d7f-3d08-4593-ad4d-0d630abcd627"
สรุป
ถ้าจะเชื่อมต่อไปใช้ 네트워킹ของ 용기.อื่นๆ ผ่าน 부두 노동자 경주ให้ใช้ 옵션-네트워크ค่าที่กำหนดคือ
container:
ตามด้วยชื่อ 용기.ที่จะไปต่อ เช่น --network="conatiner:headless"
แต่ถ้าใช้ docker composeให้กำหนดโดยคีย์ที่ชื่อว่า network_mode
ค่าที่กำหนดคือ service:
ตามด้วยชื่อ 서비스ที่จะไปต่อ เช่น network_mode: "service:chrome-headless"
ขอฝาก 커피 한 잔 주세요.
สำหรับท่านใดที่อ่านแล้วชอบโพสต์ต่างๆของผมที่นี่ ต้องการสนับสนุนค่ากาแฟเล็กๆน้อยๆ สามารถสนับสนุนผมได้ผ่านทาง 커피 한 잔 주세요.คลิ๊กที่รูปด้านล่างนี้ได้เลยครับ
ส่วนท่านใดไม่สะดวกใช้บัตรเครดิต หรือ 패보สามารถสนับสนุนผมได้ผ่านทาง 선불금โดยดู QR코드ได้จากโพสต์ที่พินเอาไว้ได้ที่ 페이지 디자인ครับ https://web.facebook.com/devdoseth
Reference
이 문제에 관하여(부두 노동자 경주ภายใต้ 네트워킹ของ 용기.อื่น), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/iporsut/docker-run-network-container-118m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)