镜像构建历史
# 2025-11-20 20:35:52 0.00B 设置默认要执行的命令
CMD ["python" "-m" "uvicorn" "app.main:app" "--host" "0.0.0.0" "--port" "8000"]
# 2025-11-20 20:35:52 0.00B 设置环境变量 DOCKER_CONTAINER
ENV DOCKER_CONTAINER=true
# 2025-11-20 20:35:52 0.00B 声明容器运行时监听的端口
EXPOSE [8000/tcp]
# 2025-11-20 20:35:52 11.78KB 复制新文件或目录到容器中
COPY .env.docker ./.env # buildkit
# 2025-11-20 20:35:52 451.22KB 复制新文件或目录到容器中
COPY install ./install # buildkit
# 2025-11-20 20:35:52 7.06MB 复制新文件或目录到容器中
COPY docs ./docs # buildkit
# 2025-11-20 20:35:52 2.55MB 复制新文件或目录到容器中
COPY scripts ./scripts # buildkit
# 2025-11-20 20:35:52 6.49KB 复制新文件或目录到容器中
COPY config ./config # buildkit
# 2025-11-20 20:35:52 1.67MB 复制新文件或目录到容器中
COPY tradingagents ./tradingagents # buildkit
# 2025-11-20 20:35:52 2.21MB 复制新文件或目录到容器中
COPY app ./app # buildkit
# 2025-11-20 09:07:01 1.13GB 执行命令并创建新的镜像层
RUN |1 TARGETARCH=amd64 /bin/sh -c pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple && pip install --prefer-binary . -i https://pypi.tuna.tsinghua.edu.cn/simple && pip install --prefer-binary pdfkit -i https://pypi.tuna.tsinghua.edu.cn/simple # buildkit
# 2025-11-20 09:01:48 15.24KB 复制新文件或目录到容器中
COPY pyproject.toml README.md ./ # buildkit
# 2025-11-19 14:46:28 636.65MB 执行命令并创建新的镜像层
RUN |1 TARGETARCH=amd64 /bin/sh -c mkdir -p /app/logs /app/data /app/config && echo 'Acquire::Retries "3";' > /etc/apt/apt.conf.d/80-retries && echo 'Acquire::http::Timeout "30";' >> /etc/apt/apt.conf.d/80-retries && echo 'Acquire::https::Timeout "30";' >> /etc/apt/apt.conf.d/80-retries && (apt-get update || apt-get update || apt-get update) && apt-get install -y --no-install-recommends ca-certificates curl fontconfig fonts-noto-cjk wget xvfb && if [ "$TARGETARCH" = "arm64" ]; then PANDOC_ARCH="arm64"; WKHTMLTOPDF_ARCH="arm64"; else PANDOC_ARCH="amd64"; WKHTMLTOPDF_ARCH="amd64"; fi && wget -q https://github.com/jgm/pandoc/releases/download/3.8.2.1/pandoc-3.8.2.1-1-${PANDOC_ARCH}.deb && dpkg -i pandoc-3.8.2.1-1-${PANDOC_ARCH}.deb && rm pandoc-3.8.2.1-1-${PANDOC_ARCH}.deb && wget -q https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_${WKHTMLTOPDF_ARCH}.deb && apt-get install -y --no-install-recommends ./wkhtmltox_0.12.6.1-3.bookworm_${WKHTMLTOPDF_ARCH}.deb && rm wkhtmltox_0.12.6.1-3.bookworm_${WKHTMLTOPDF_ARCH}.deb && fc-cache -fv && rm -rf /var/lib/apt/lists/* # buildkit
# 2025-11-19 14:45:11 0.00B 设置工作目录为/app
WORKDIR /app
# 2025-11-19 14:45:11 0.00B 设置环境变量 PYTHONDONTWRITEBYTECODE PYTHONUNBUFFERED PIP_NO_CACHE_DIR TZ
ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1 TZ=Asia/Shanghai
# 2025-11-19 14:45:11 0.00B 定义构建参数
ARG TARGETARCH=amd64
# 2025-11-18 14:01:46 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2025-11-18 14:01:46 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
# 2025-11-18 14:01:46 42.87MB 执行命令并创建新的镜像层
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 $(test "${gnuArch%%-*}" != 'riscv64' && echo '--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 -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | 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==79.0.1' 'wheel<0.46' ; pip3 --version # buildkit
# 2025-11-18 13:55:27 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076
# 2025-11-18 13:55:27 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.10.19
# 2025-11-18 13:55:27 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
# 2025-11-18 13:55:27 9.25MB 执行命令并创建新的镜像层
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
# 2025-11-18 13:55:27 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2025-11-18 13:55:27 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2025-11-17 08:00:00 74.81MB
# debian.sh --arch 'amd64' out/ 'bookworm' '@1763337600'
镜像信息
{
"Id": "sha256:fa7d7760a01ce2f2e4c9ee340b6c2e4b91ecaf4011c56b527ca5848dbb280eb3",
"RepoTags": [
"hsliup/tradingagents-backend:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hsliup/tradingagents-backend:latest"
],
"RepoDigests": [
"hsliup/tradingagents-backend@sha256:cdaa31fd91e7d4cc1f7c14d10f4e182f2ab35e2388cc07a5e3c7da7cc2796ac9",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/hsliup/tradingagents-backend@sha256:1f83b1bde9a33e1bfcc80b78246a617b905f6bb76a25de9951befaf4c36942e8"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2025-11-20T12:35:52.766170407Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"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.10.19",
"PYTHON_SHA256=c8f4a596572201d81dd7df91f70e177e19a70f1d489968b54b5fbbf29a97c076",
"PYTHONDONTWRITEBYTECODE=1",
"PYTHONUNBUFFERED=1",
"PIP_NO_CACHE_DIR=1",
"TZ=Asia/Shanghai",
"DOCKER_CONTAINER=true"
],
"Cmd": [
"python",
"-m",
"uvicorn",
"app.main:app",
"--host",
"0.0.0.0",
"--port",
"8000"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1903375830,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/a5608b8420de800c211f5e7862f4a6a4ad281c7ed5f46e604bdac8ff4f126536/diff:/var/lib/docker/overlay2/09b449e17095e3b949e10959670591a04c5b205759507992505c2f009df628bb/diff:/var/lib/docker/overlay2/8c82cb9add209f8b9346f874ba00cdb70ea16bc26424a55251b189d8e7b3df81/diff:/var/lib/docker/overlay2/4c818d0cd11d439991a7a407078f9f15276e710b9e79b60cf29401ba7ddc5723/diff:/var/lib/docker/overlay2/89e47ee32db19a2ce4089f7733888be96b60ab678afd80bd652a011206d7b1f2/diff:/var/lib/docker/overlay2/c14e5ed78cb0b3e16c2376640dce94a6abf51fb85396abd0a4b8f5eeaf9971af/diff:/var/lib/docker/overlay2/f1cbdbb9bdf58f14ad8bfd9ba4bb7a228b4b5fe1fdea5d811854f00f20ca655c/diff:/var/lib/docker/overlay2/00a3da300827ef6368740ed3fea197b41d84306cb8f83fa02f097205feca77f5/diff:/var/lib/docker/overlay2/97fcf26d295b37795d547944f10741c9a7ab816eb6ebe9b1b5169a3714b4edea/diff:/var/lib/docker/overlay2/bee52c5450496d48aee778cf966f26a041cae2dd7d3096d22de04e86833ce0ab/diff:/var/lib/docker/overlay2/999b9fdb5e7d66f3430f4ac800a6dab46afe6fc6d13725d506073592cbf176d0/diff:/var/lib/docker/overlay2/987035014fd5f8c351437ad6214106fbc7c59f8ecad9896d1af2bfe77455c844/diff:/var/lib/docker/overlay2/ca9c34d6d761ff2345f97ec9a04b739eb5ddb9ad93090e660e28962a42f429b7/diff:/var/lib/docker/overlay2/50ffce65cce11429f11dd712054235945dc8f6a15de691c4ae7c8f8ae81ac3b4/diff",
"MergedDir": "/var/lib/docker/overlay2/016012a9612a5b558741128cd38eed796c593a39c104d7eed4f45b8e7115add5/merged",
"UpperDir": "/var/lib/docker/overlay2/016012a9612a5b558741128cd38eed796c593a39c104d7eed4f45b8e7115add5/diff",
"WorkDir": "/var/lib/docker/overlay2/016012a9612a5b558741128cd38eed796c593a39c104d7eed4f45b8e7115add5/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:bd2be69c2f99787cb0e82abb70c4f40195074360a991a329f9a0908d8d1f28e7",
"sha256:2663f30a8030392bf34480aff599628dfa85f270dbe5e3f9b1ef3a8c7837867b",
"sha256:1ebb8537e3cde57f0b4a494e06ff54b03f88cfbc9b64a3f0495195ef55821187",
"sha256:b65a783576917b96f4877f34b7dee721bc9c55560420fa54917aad8b40e16823",
"sha256:c42283d8d443fe67d3de28c44c4cad4552fd572a6fdfbe747ba73e182d0ac16a",
"sha256:3cde4ac25376faaa728f36364d13d8d53fd77fbe8cbaacf0ec97609409cc5ec4",
"sha256:b008e184ef3557aaaa9806d59c037137c3ab702474c9196d17f925f307f3955d",
"sha256:d65a316cfbf881329410abb5555413548b996703acbcf9ebba5bcd4851d9ea23",
"sha256:428704fc6b67a029c1aadc5f08b83e378f1dd3daecd1554a13ec5d905b4636c5",
"sha256:4137708e69723ca7a77fb7c0e24388b5e940638bbf68d37e62da2b30b275edb8",
"sha256:e7630743fc7ac281dbdb34b758379d508443ab04470c72eb36c7d155e7e912ed",
"sha256:011437a796f59df5a5a8c0e28d8e603481f3d00986097b1fddd96859959166bb",
"sha256:868e2bc57e2e2ea8e021dc757a8ccb8ba33ebfee2dcd93c7406314187994a886",
"sha256:64143c6fcf64935da208bba004e54e8bc89398cc34bb0050db0829693b26b18b",
"sha256:2362d03ed7b6a977e37ddadcc3a0d8226e7c026a4aaf003c78fb18109ac819e8"
]
},
"Metadata": {
"LastTagTime": "2026-03-30T15:58:11.262979691+08:00"
}
}