Namespace
zhulinsen
Image / Tag
daily_stock_analysis:sha-84ba462b06716d29574c898e531f8e4a1daad5da
Content Digest
sha256:e987e7993530ca6039254d790e6d3f54fc6736acf4981b94f700ea0d4ce14ad8
Details
Created

2026-08-02 13:52:48 UTC

Size

452 MB

Content Digest
Labels
  • org.opencontainers.image.created
    2026-08-02T13:48:29.097Z
  • org.opencontainers.image.description
    LLM 驱动的多市场股票智能分析系统:多源行情、实时新闻、决策看板与自动推送,支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.
  • org.opencontainers.image.licenses
    MIT
  • org.opencontainers.image.revision
    84ba462b06716d29574c898e531f8e4a1daad5da
  • org.opencontainers.image.source
    https://github.com/ZhuLinsen/daily_stock_analysis
  • org.opencontainers.image.title
    daily_stock_analysis
  • org.opencontainers.image.url
    https://github.com/ZhuLinsen/daily_stock_analysis
  • org.opencontainers.image.version
    v3.29.0

Environment
API_PORT

8000

DATABASE_PATH

/app/data/stock_analysis.db

GPG_KEY

A035C8C19219BA821ECEA86B64E628F8D684696D

LANG

C.UTF-8

LOG_DIR

/app/logs

PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PYTHONUNBUFFERED

1

PYTHON_SHA256

272179ddd9a2e41a0fc8e42e33dfbdca0b3711aa5abf372d3f2d51543d09b625

PYTHON_VERSION

3.11.15

TZ

Asia/Shanghai

WEBUI_HOST

0.0.0.0


Layers

[#000] sha256:597c6c618d36213af657a6a8444a5d87801f9a219682b206ad21ccb8f3e57bbd - 5.95% (26.9 MB)

[#001] sha256:dec88b5dd81fd5ec5221d84c07c641f2250e14cd4da2b1201bb9cbd6fc310c63 - 0.74% (3.36 MB)

[#002] sha256:50bbb63acf74ea1d827730a9b7d70c7721b9ec2da91617a595c348a41a3ca165 - 3.37% (15.2 MB)

[#003] sha256:0e1c3fb2fe1c37ce1771e407f2a0f9eefe0bf98174be2d6cfd72d61c42a31e57 - 0.0% (248 Bytes)

[#004] sha256:9d3530c893ea23394483dc139a1053ed15cbc8e84a61476d3e7f116537cc9f15 - 0.0% (93 Bytes)

[#005] sha256:dbfed6a0dce5d2e028b49a7d5477f4d5bb6051fc8c0637d29efc8a1728d56088 - 0.0% (192 Bytes)

[#006] sha256:64aa0da28ede7cd97c2de370ebe12de086a2d2cac77285794208735017baf96e - 39.06% (177 MB)

[#007] sha256:83eb94cee14db0e03af94691f41f3bfdbc5e6bb616a0e8dbcc1cc0dd511c8912 - 0.0% (3.23 KB)

[#008] sha256:05b5fa529806896b38fb5580252ca2e257a900bd22040fb3df555309bc54f877 - 0.0% (1.89 KB)

[#009] sha256:c6a62b7818d2ec30212fb09fce6861cc58e07149defc8ae40181baf59cc2b355 - 48.31% (218 MB)

[#010] sha256:fd0f5c05f98c63ba9ccba19a42ab9d44fcaa755a408b606649241c00c583401e - 0.0% (17.3 KB)

[#011] sha256:05411993d9fef1bd25edb5750dc4a8a4d4f13bc5d5a65938b3b3bfbf73d3e208 - 0.06% (272 KB)

[#012] sha256:91352b65b6a3b26a6480bba09a112b428c2346e3be867f1018cd2b24b8ef002f - 0.1% (444 KB)

[#013] sha256:5d904e8559269f8696c543e31a497b0734135ecef06f76d3286d3f2c343a431c - 0.03% (148 KB)

[#014] sha256:3f4096697402ca8ec032aef8f529a6f45f850e2fa04fc49f6329295dfc9dcd05 - 0.8% (3.64 MB)

[#015] sha256:a4a974b6e65016d6c2193cd16b466c4b03d607218b8a52ef08a924a63a05994a - 0.0% (14.2 KB)

[#016] sha256:47b49fd16241accecd94dc9c4473675fb2bfb2f016fcf31c1e703a31ccd5c521 - 0.27% (1.22 MB)

[#017] sha256:ed0b802e56ced6bc32b0ea850150d4255b3edee6eed445719f27aba58e4a241f - 0.0% (1.05 KB)

[#018] sha256:fc5d1b5920f051c87af7ecc56fadfef02a9b6e884d5d164f0f987babf239cef2 - 0.01% (59.1 KB)

[#019] sha256:47b008474d9d8d841cb71029734e7231d556913787467a4cd2843cef4758c5c6 - 1.27% (5.73 MB)

[#020] sha256:4099946e2647cee0917db33d379bce6e43c589d1ab6984c334823269c61ecedc - 0.02% (85.9 KB)


History
2026-07-13 00:00:00 UTC (debuerreotype 0.17)

# debian.sh --arch 'amd64' out/ 'bookworm' '@1783900800'

2026-07-14 02:03:56 UTC (buildkit.dockerfile.v0)

ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-07-14 02:03:56 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2026-07-14 02:03:56 UTC (buildkit.dockerfile.v0)

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

2026-07-14 02:03:56 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D

2026-07-14 02:03:56 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.11.15

2026-07-14 02:03:56 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=272179ddd9a2e41a0fc8e42e33dfbdca0b3711aa5abf372d3f2d51543d09b625

2026-07-14 02:13:14 UTC (buildkit.dockerfile.v0)

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.3' ; pip3 --version # buildkit

2026-07-14 02:13:14 UTC (buildkit.dockerfile.v0)

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

2026-07-14 02:13:14 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2026-08-02 13:50:34 UTC (buildkit.dockerfile.v0)

WORKDIR /app

2026-08-02 13:50:34 UTC (buildkit.dockerfile.v0)

ENV TZ=Asia/Shanghai

2026-08-02 13:50:34 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # buildkit

2026-08-02 13:51:05 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends gcc curl gosu wkhtmltopdf fontconfig libjpeg62-turbo libxrender1 libxext6 && rm -rf /var/lib/apt/lists/* # buildkit

2026-08-02 13:51:05 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c groupadd -g 1000 dsa && useradd -u 1000 -g dsa -m dsa # buildkit

2026-08-02 13:51:05 UTC (buildkit.dockerfile.v0)

COPY requirements.txt . # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c pip install -r requirements.txt # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

COPY *.py ./ # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

COPY api/ ./api/ # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

COPY data_provider/ ./data_provider/ # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

COPY bot/ ./bot/ # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

COPY src/ ./src/ # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

COPY strategies/ ./strategies/ # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

COPY /app/static ./static/ # buildkit

2026-08-02 13:52:45 UTC (buildkit.dockerfile.v0)

COPY docker/entrypoint.sh /usr/local/bin/docker-entrypoint.sh # buildkit

2026-08-02 13:52:47 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c mkdir -p /tmp/futu-sdk-smoke-home && HOME=/tmp/futu-sdk-smoke-home python -c "import src.services.screening.pipeline; import futu" && rm -rf /tmp/futu-sdk-smoke-home # buildkit

2026-08-02 13:52:47 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c mkdir -p /app/data /app/logs /app/reports && chown -R dsa:dsa /app && chmod +x /usr/local/bin/docker-entrypoint.sh # buildkit

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c EF_DATA_DIR="$(python -c 'import efinance, pathlib; print(pathlib.Path(efinance.__file__).parent / "data")')" && mkdir -p "$EF_DATA_DIR" && chown -R dsa:dsa "$EF_DATA_DIR" # buildkit

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

ENV PYTHONUNBUFFERED=1

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

ENV LOG_DIR=/app/logs

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

ENV DATABASE_PATH=/app/data/stock_analysis.db

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

ENV WEBUI_HOST=0.0.0.0

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

ENV API_PORT=8000

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

EXPOSE map[8000/tcp:{}]

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

VOLUME [/app/data /app/logs /app/reports]

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

HEALTHCHECK &{["CMD-SHELL" "curl -f http://localhost:8000/api/health || curl -f http://localhost:8000/health || python -c \"import sys; sys.exit(0)\""] "30s" "10s" "10s" "0s" '\x03'}

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

2026-08-02 13:52:48 UTC (buildkit.dockerfile.v0)

CMD ["python" "main.py" "--schedule"]

Details
Created

2026-08-02 14:04:40 UTC

Size

442 MB

Content Digest
Labels
  • org.opencontainers.image.created
    2026-08-02T13:48:29.097Z
  • org.opencontainers.image.description
    LLM 驱动的多市场股票智能分析系统:多源行情、实时新闻、决策看板与自动推送,支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.
  • org.opencontainers.image.licenses
    MIT
  • org.opencontainers.image.revision
    84ba462b06716d29574c898e531f8e4a1daad5da
  • org.opencontainers.image.source
    https://github.com/ZhuLinsen/daily_stock_analysis
  • org.opencontainers.image.title
    daily_stock_analysis
  • org.opencontainers.image.url
    https://github.com/ZhuLinsen/daily_stock_analysis
  • org.opencontainers.image.version
    v3.29.0

Environment
API_PORT

8000

DATABASE_PATH

/app/data/stock_analysis.db

GPG_KEY

A035C8C19219BA821ECEA86B64E628F8D684696D

LANG

C.UTF-8

LOG_DIR

/app/logs

PATH

/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PYTHONUNBUFFERED

1

PYTHON_SHA256

272179ddd9a2e41a0fc8e42e33dfbdca0b3711aa5abf372d3f2d51543d09b625

PYTHON_VERSION

3.11.15

TZ

Asia/Shanghai

WEBUI_HOST

0.0.0.0


Layers

[#000] sha256:53bb9e501f1803aca595be8d902a62cea6bf4d996ce6f7dfe16c1c97be343e6c - 6.06% (26.8 MB)

[#001] sha256:a093584883a7c9c386ba2d552bbd5e2a8a02146dc575229226559d8b01d65468 - 0.72% (3.2 MB)

[#002] sha256:d0784a65d0e7b725d2ebe0cd435a5d3f1c7f4df4d5c053e03cac80f46996c852 - 3.44% (15.2 MB)

[#003] sha256:b82dea5b8ca01e957a2edfa34cc6cc6e1d078a22630f74cd6b1d1093b65320ae - 0.0% (248 Bytes)

[#004] sha256:9d3530c893ea23394483dc139a1053ed15cbc8e84a61476d3e7f116537cc9f15 - 0.0% (93 Bytes)

[#005] sha256:dbfed6a0dce5d2e028b49a7d5477f4d5bb6051fc8c0637d29efc8a1728d56088 - 0.0% (192 Bytes)

[#006] sha256:0491e10aaa90e1acb67ce547f8d2d2b2d92433d4fd0a4b8c9bd918b0eff6d180 - 38.44% (170 MB)

[#007] sha256:bc1a427ce7641ddeffe754f83918d2bf49a8802ea785ede56ced593945359369 - 0.0% (3.23 KB)

[#008] sha256:f3eda65ff46f9adc060db8309c7c2c63dad3d9ea90014ec032fe406698edb521 - 0.0% (1.89 KB)

[#009] sha256:58154f83e383ff86ed5252186f5009260b761ad4923c9154bb6ee6e27cb2156a - 48.72% (215 MB)

[#010] sha256:80223a2ffeecc9fbe8d49fd8a98dd81b22edb85cc73a6c9a2861f9668497cba9 - 0.0% (17.3 KB)

[#011] sha256:b538a7aaab584cfa603403a7055f7a0392bf406fc988f542535b07d29c6585d2 - 0.06% (272 KB)

[#012] sha256:1286fb0f76ffb4d4d579dbd2b0313b2bad55417e8c28946fc0273a5541a85219 - 0.1% (444 KB)

[#013] sha256:80032a5fd2a03d9ee4fead53837928180a592ccb5e84d25a3ddb0befe1763f90 - 0.03% (148 KB)

[#014] sha256:0463bb9061737ec2cbd82636b41a29fa0210ffe8d8e12bd6ec621694ee2e78b0 - 0.82% (3.64 MB)

[#015] sha256:dcad1aed81a1f5dbef92a937e6532578a239d034e9cb76c9cbaca1cf5407fc46 - 0.0% (14.2 KB)

[#016] sha256:09435555fe0b36a0ac07fffdb6e1ba70a1da9657485451204212188dbc751618 - 0.28% (1.22 MB)

[#017] sha256:463637d170e2514bafb2b418b6a0bdab7f220013569c2de17d21369e72d25607 - 0.0% (1.05 KB)

[#018] sha256:ef7745083b67ebf0071e081e22bd5763bb6547b5ef99e95d77a2cd71b8c644ff - 0.01% (59.2 KB)

[#019] sha256:afa4d81162fe161d3a32c0e7f75de1cb76eb9eae063f5928e4f58a6277a760ed - 1.3% (5.73 MB)

[#020] sha256:041674b3d6699a75e16f486c00deff25b59fcb36e65e137e3f0721ccb5c1c76f - 0.02% (85.9 KB)


History
2026-07-13 00:00:00 UTC (debuerreotype 0.17)

# debian.sh --arch 'arm64' out/ 'bookworm' '@1783900800'

2026-07-14 02:08:01 UTC (buildkit.dockerfile.v0)

ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-07-14 02:08:01 UTC (buildkit.dockerfile.v0)

ENV LANG=C.UTF-8

2026-07-14 02:08:01 UTC (buildkit.dockerfile.v0)

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

2026-07-14 02:08:01 UTC (buildkit.dockerfile.v0)

ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D

2026-07-14 02:08:01 UTC (buildkit.dockerfile.v0)

ENV PYTHON_VERSION=3.11.15

2026-07-14 02:08:01 UTC (buildkit.dockerfile.v0)

ENV PYTHON_SHA256=272179ddd9a2e41a0fc8e42e33dfbdca0b3711aa5abf372d3f2d51543d09b625

2026-07-14 02:19:12 UTC (buildkit.dockerfile.v0)

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.3' ; pip3 --version # buildkit

2026-07-14 02:19:12 UTC (buildkit.dockerfile.v0)

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

2026-07-14 02:19:12 UTC (buildkit.dockerfile.v0)

CMD ["python3"]

2026-08-02 13:50:34 UTC (buildkit.dockerfile.v0)

WORKDIR /app

2026-08-02 13:50:34 UTC (buildkit.dockerfile.v0)

ENV TZ=Asia/Shanghai

2026-08-02 13:50:34 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # buildkit

2026-08-02 13:54:11 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c apt-get update && apt-get install -y --no-install-recommends gcc curl gosu wkhtmltopdf fontconfig libjpeg62-turbo libxrender1 libxext6 && rm -rf /var/lib/apt/lists/* # buildkit

2026-08-02 13:54:11 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c groupadd -g 1000 dsa && useradd -u 1000 -g dsa -m dsa # buildkit

2026-08-02 13:54:11 UTC (buildkit.dockerfile.v0)

COPY requirements.txt . # buildkit

2026-08-02 14:04:27 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c pip install -r requirements.txt # buildkit

2026-08-02 14:04:27 UTC (buildkit.dockerfile.v0)

COPY *.py ./ # buildkit

2026-08-02 14:04:28 UTC (buildkit.dockerfile.v0)

COPY api/ ./api/ # buildkit

2026-08-02 14:04:28 UTC (buildkit.dockerfile.v0)

COPY data_provider/ ./data_provider/ # buildkit

2026-08-02 14:04:28 UTC (buildkit.dockerfile.v0)

COPY bot/ ./bot/ # buildkit

2026-08-02 14:04:28 UTC (buildkit.dockerfile.v0)

COPY src/ ./src/ # buildkit

2026-08-02 14:04:28 UTC (buildkit.dockerfile.v0)

COPY strategies/ ./strategies/ # buildkit

2026-08-02 14:04:28 UTC (buildkit.dockerfile.v0)

COPY /app/static ./static/ # buildkit

2026-08-02 14:04:28 UTC (buildkit.dockerfile.v0)

COPY docker/entrypoint.sh /usr/local/bin/docker-entrypoint.sh # buildkit

2026-08-02 14:04:34 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c mkdir -p /tmp/futu-sdk-smoke-home && HOME=/tmp/futu-sdk-smoke-home python -c "import src.services.screening.pipeline; import futu" && rm -rf /tmp/futu-sdk-smoke-home # buildkit

2026-08-02 14:04:34 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c mkdir -p /app/data /app/logs /app/reports && chown -R dsa:dsa /app && chmod +x /usr/local/bin/docker-entrypoint.sh # buildkit

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c EF_DATA_DIR="$(python -c 'import efinance, pathlib; print(pathlib.Path(efinance.__file__).parent / "data")')" && mkdir -p "$EF_DATA_DIR" && chown -R dsa:dsa "$EF_DATA_DIR" # buildkit

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

ENV PYTHONUNBUFFERED=1

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

ENV LOG_DIR=/app/logs

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

ENV DATABASE_PATH=/app/data/stock_analysis.db

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

ENV WEBUI_HOST=0.0.0.0

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

ENV API_PORT=8000

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

EXPOSE map[8000/tcp:{}]

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

VOLUME [/app/data /app/logs /app/reports]

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

HEALTHCHECK &{["CMD-SHELL" "curl -f http://localhost:8000/api/health || curl -f http://localhost:8000/health || python -c \"import sys; sys.exit(0)\""] "30s" "10s" "10s" "0s" '\x03'}

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

2026-08-02 14:04:40 UTC (buildkit.dockerfile.v0)

CMD ["python" "main.py" "--schedule"]

Danger Zone
Delete Tag

Please be careful as this will not just delete the reference but also the actual content!

For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.

Delete