镜像构建历史
# 2025-02-27 06:59:46 0.00B 设置默认要执行的命令
CMD ["sh" "-c" "uvicorn main:app --host ${HOST:-0.0.0.0} --port ${PORT:-8000}"]
# 2025-02-27 06:59:46 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2025-02-27 06:59:46 0.00B 指定运行容器时使用的用户
USER playwright
# 2025-02-27 06:59:46 19.98KB 执行命令并创建新的镜像层
RUN /bin/sh -c chown -R playwright:playwright /app # buildkit
# 2025-02-27 06:59:46 19.92KB 复制新文件或目录到容器中
COPY . . # buildkit
# 2025-02-27 06:59:46 1.71GB 执行命令并创建新的镜像层
RUN /bin/sh -c mkdir /ms-playwright && playwright install chromium --with-deps && playwright install firefox --with-deps && playwright install webkit --with-deps && chown -R playwright:playwright /ms-playwright # buildkit
# 2025-02-27 06:59:46 0.00B 设置环境变量 PLAYWRIGHT_BROWSERS_PATH
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
# 2025-02-27 06:58:59 180.81MB 执行命令并创建新的镜像层
RUN /bin/sh -c pip install --no-cache-dir -r requirements.txt # buildkit
# 2025-02-27 06:58:50 61.00B 复制新文件或目录到容器中
COPY requirements.txt . # buildkit
# 2025-02-27 06:58:50 8.94KB 执行命令并创建新的镜像层
RUN /bin/sh -c useradd -m -u 1000 playwright # buildkit
# 2025-02-27 06:58:50 11.29MB 执行命令并创建新的镜像层
RUN /bin/sh -c apt-get update && apt-get install -y wget gnupg curl && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-02-27 06:58:45 0.00B 设置工作目录为/app
WORKDIR /app
# 2024-12-04 06:49:59 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2024-12-04 06:49:59 36.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit
# 2024-12-04 06:49:59 45.80MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared --with-lto --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:--Wl},--strip-all"; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; rm -rf /var/lib/apt/lists/*; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 install --disable-pip-version-check --no-cache-dir --no-compile 'setuptools==65.5.1' wheel ; pip3 --version # buildkit
# 2024-12-04 06:49:59 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=2a9920c7a0cd236de33644ed980a13cbbc21058bfdc528febb6081575ed73be3
# 2024-12-04 06:49:59 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.11.11
# 2024-12-04 06:49:59 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
# 2024-12-04 06:49:59 9.24MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; rm -rf /var/lib/apt/lists/* # buildkit
# 2024-12-04 06:49:59 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2024-12-04 06:49:59 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2024-12-04 06:49:59 74.78MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1740355200'
镜像信息
{
"Id": "sha256:ada24ad468518813cefeda3c95d2a5aeae253b3e2f37861c51ba30cd0d8e14bc",
"RepoTags": [
"watercrawl/playwright:1.1",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/watercrawl/playwright:1.1"
],
"RepoDigests": [
"watercrawl/playwright@sha256:a7047db077376ef0c3254c3bc524d74ee06b5df6a388d17e1790b96ec687926c",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/watercrawl/playwright@sha256:3a9507d0c553b8a726af0d7244105a4939a6c429b242c77c42b9def028f522a2"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-02-26T22:59:46.736084085Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "playwright",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D",
"PYTHON_VERSION=3.11.11",
"PYTHON_SHA256=2a9920c7a0cd236de33644ed980a13cbbc21058bfdc528febb6081575ed73be3",
"PLAYWRIGHT_BROWSERS_PATH=/ms-playwright"
],
"Cmd": [
"sh",
"-c",
"uvicorn main:app --host ${HOST:-0.0.0.0} --port ${PORT:-8000}"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.created": "2025-02-26T22:58:42.055Z",
"org.opencontainers.image.description": "A FastAPI-based web service that uses Playwright to fetch and process web content.",
"org.opencontainers.image.licenses": "MIT",
"org.opencontainers.image.revision": "a653e8c0ed313352a7584a00bef96290d9f8787d",
"org.opencontainers.image.source": "https://github.com/watercrawl/playwright",
"org.opencontainers.image.title": "playwright",
"org.opencontainers.image.url": "https://github.com/watercrawl/playwright",
"org.opencontainers.image.version": "1.1.1"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 2034220288,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/5ae96d07cd22f938f1f110ab25c0e42beba51abec6bef2410335cdbaf5b2b14b/diff:/var/lib/docker/overlay2/3d5f79dceb43d7e7326ac020b21d2156b5df3ff1163392374b03d01e37154cb6/diff:/var/lib/docker/overlay2/bb9bc300b09c254fc549b6c8f914c1e7cacf84cbcfe516e27c79b121d040262f/diff:/var/lib/docker/overlay2/a11602cc66e33665ae77e153654b41230556bf20c59da9cb16f08b164049f733/diff:/var/lib/docker/overlay2/47d19c8ded847ef1a258978b98463997f517610b2becb6f4dddd8c18f2a342cc/diff:/var/lib/docker/overlay2/173bade0cca525212f9ddc71e0a796d174adffa44cb060f701a166d784492418/diff:/var/lib/docker/overlay2/b2a45b888c1b1e2d366c0954cb604d6ad31af6596a0ffc08917cf72b055ade40/diff:/var/lib/docker/overlay2/0d084f5d0bd37816553200be72c70de8a2e96524a5fb2928b732b69bf1ff1427/diff:/var/lib/docker/overlay2/239d6bca0cc5ac5cb4c34cc689817d7f0b165a3770630af5769cfa13a9320744/diff:/var/lib/docker/overlay2/1b5c1f9c984362853aa688d3746c3e86e4ce22bd445954dd66d2b787600649b9/diff:/var/lib/docker/overlay2/40cccd39fefdfa825b76bf15843ca427b487f28099f707bd80648ea0980ffefe/diff",
"MergedDir": "/var/lib/docker/overlay2/29bd47ff2078f7bee117262fbb6942e6a4c0a0b0bd55640f3a2ccb68dc0b026f/merged",
"UpperDir": "/var/lib/docker/overlay2/29bd47ff2078f7bee117262fbb6942e6a4c0a0b0bd55640f3a2ccb68dc0b026f/diff",
"WorkDir": "/var/lib/docker/overlay2/29bd47ff2078f7bee117262fbb6942e6a4c0a0b0bd55640f3a2ccb68dc0b026f/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:5f1ee22ffb5e68686db3dcb6584eb1c73b5570615b0f14fabb070b96117e351d",
"sha256:02e5dc3ed962b7d6c5a61ff01528a8760125f47b531bc2999d6d3990d67bd01a",
"sha256:1482d10861f734911f5dac47d8647096396e41d99de1804110f318836b5a4283",
"sha256:7dc6e24448644a289443a056c738aa42ba357ed08e249e9db879e35a869b3697",
"sha256:a13dac5c2e7b25b4851a25803394ce4be0f707908577b42155ee037deb39331f",
"sha256:b29d42f6d16ff18749589ee84f136627a7f1c16671ee6726426b66b4b3f4e66d",
"sha256:ee21102f2f7a27f243097b198b9e4d71eaa2980dc04324e6e0e42d24df300847",
"sha256:4eef3c64359c385a27745996a529c3a89b43a7acf0d69c447d9fc62bd0d32f83",
"sha256:6b85f83fe58665c5ddeca534583f31e42653171b22f3069fffad371e92f95030",
"sha256:ee0527de6314059596e33e5463ce86b49cbbf90def7982bafe3ca4373d2becad",
"sha256:121ce47289f8c4dabeea4f6ea57ce13a78c2da825d4a802a3a9f6ead13dc2842",
"sha256:07006df06f3c4c5c4997e1b11bfe246d6ee4373d4aa53302a7cb5a89ca79fb35"
]
},
"Metadata": {
"LastTagTime": "2025-06-13T17:05:11.730078504+08:00"
}
}