Commit
·
d262ad0
1
Parent(s):
9036d93
Fix docker build issues.
Browse files- .dockerignore +4 -0
- Dockerfile +34 -11
- dataset/app.py → app.py +0 -0
- uv.lock +44 -41
.dockerignore
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.zip
|
2 |
+
./dataset/diabetes_012_health_indicators_BRFSS2015.csv
|
3 |
+
./dataset/diabetes_binary_5050split_health_indicators_BRFSS2015.csv
|
4 |
+
./dataset/final_phone_preferences_india.csv
|
Dockerfile
CHANGED
@@ -1,18 +1,41 @@
|
|
1 |
-
|
2 |
-
COPY --from=ghcr.io/astral-sh/uv:0.4.20 /uv /bin/uv
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
WORKDIR /app
|
|
|
|
|
|
|
|
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
RUN uv export --frozen > requirements.txt
|
13 |
-
RUN uv pip install -r requirements.txt
|
14 |
|
15 |
-
COPY --chown=user . /app
|
16 |
-
USER user
|
17 |
|
|
|
18 |
CMD ["marimo", "run", "app.py", "--include-code", "--host", "0.0.0.0", "--port", "7860"]
|
|
|
1 |
+
# An example using multi-stage image builds to create a final image without uv.
|
|
|
2 |
|
3 |
+
# First, build the application in the `/app` directory.
|
4 |
+
# See `Dockerfile` for details.
|
5 |
+
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS builder
|
6 |
+
ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy
|
7 |
+
|
8 |
+
# Disable Python downloads, because we want to use the system interpreter
|
9 |
+
# across both images. If using a managed Python version, it needs to be
|
10 |
+
# copied from the build image into the final image; see `standalone.Dockerfile`
|
11 |
+
# for an example.
|
12 |
+
ENV UV_PYTHON_DOWNLOADS=0
|
13 |
+
|
14 |
+
WORKDIR /app
|
15 |
+
RUN --mount=type=cache,target=/root/.cache/uv \
|
16 |
+
--mount=type=bind,source=uv.lock,target=uv.lock \
|
17 |
+
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
18 |
+
uv sync --frozen --no-install-project --no-dev
|
19 |
+
ADD . /app
|
20 |
+
RUN --mount=type=cache,target=/root/.cache/uv \
|
21 |
+
uv sync --frozen --no-dev
|
22 |
+
|
23 |
+
|
24 |
+
# Then, use a final image without uv
|
25 |
+
FROM python:3.13-slim-bookworm
|
26 |
+
# It is important to use the image that matches the builder, as the path to the
|
27 |
+
# Python executable must be the same, e.g., using `python:3.11-slim-bookworm`
|
28 |
+
# will fail.
|
29 |
|
30 |
WORKDIR /app
|
31 |
+
RUN useradd -m -u 1000 app
|
32 |
+
|
33 |
+
# Copy the application from the builder
|
34 |
+
COPY --from=builder --chown=app:app /app /app
|
35 |
|
36 |
+
# Place executables in the environment at the front of the path
|
37 |
+
ENV PATH="/app/.venv/bin:$PATH"
|
|
|
|
|
38 |
|
|
|
|
|
39 |
|
40 |
+
USER app
|
41 |
CMD ["marimo", "run", "app.py", "--include-code", "--host", "0.0.0.0", "--port", "7860"]
|
dataset/app.py → app.py
RENAMED
File without changes
|
uv.lock
CHANGED
@@ -60,7 +60,7 @@ wheels = [
|
|
60 |
]
|
61 |
|
62 |
[[package]]
|
63 |
-
name = "cc229-dataset-app"
|
64 |
version = "0.1.0"
|
65 |
source = { virtual = "." }
|
66 |
dependencies = [
|
@@ -203,7 +203,7 @@ wheels = [
|
|
203 |
|
204 |
[[package]]
|
205 |
name = "marimo"
|
206 |
-
version = "0.11.
|
207 |
source = { registry = "https://pypi.org/simple" }
|
208 |
dependencies = [
|
209 |
{ name = "click" },
|
@@ -224,9 +224,9 @@ dependencies = [
|
|
224 |
{ name = "uvicorn" },
|
225 |
{ name = "websockets" },
|
226 |
]
|
227 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
228 |
wheels = [
|
229 |
-
{ url = "https://files.pythonhosted.org/packages/
|
230 |
]
|
231 |
|
232 |
[[package]]
|
@@ -268,11 +268,11 @@ wheels = [
|
|
268 |
|
269 |
[[package]]
|
270 |
name = "narwhals"
|
271 |
-
version = "1.
|
272 |
source = { registry = "https://pypi.org/simple" }
|
273 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
274 |
wheels = [
|
275 |
-
{ url = "https://files.pythonhosted.org/packages/
|
276 |
]
|
277 |
|
278 |
[[package]]
|
@@ -527,28 +527,31 @@ wheels = [
|
|
527 |
|
528 |
[[package]]
|
529 |
name = "scipy"
|
530 |
-
version = "1.15.
|
531 |
source = { registry = "https://pypi.org/simple" }
|
532 |
dependencies = [
|
533 |
{ name = "numpy" },
|
534 |
]
|
535 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
536 |
-
wheels = [
|
537 |
-
{ url = "https://files.pythonhosted.org/packages/
|
538 |
-
{ url = "https://files.pythonhosted.org/packages/
|
539 |
-
{ url = "https://files.pythonhosted.org/packages/
|
540 |
-
{ url = "https://files.pythonhosted.org/packages/9d/
|
541 |
-
{ url = "https://files.pythonhosted.org/packages/
|
542 |
-
{ url = "https://files.pythonhosted.org/packages/
|
543 |
-
{ url = "https://files.pythonhosted.org/packages/
|
544 |
-
{ url = "https://files.pythonhosted.org/packages/
|
545 |
-
{ url = "https://files.pythonhosted.org/packages/
|
546 |
-
{ url = "https://files.pythonhosted.org/packages/
|
547 |
-
{ url = "https://files.pythonhosted.org/packages/
|
548 |
-
{ url = "https://files.pythonhosted.org/packages/
|
549 |
-
{ url = "https://files.pythonhosted.org/packages/
|
550 |
-
{ url = "https://files.pythonhosted.org/packages/
|
551 |
-
{ url = "https://files.pythonhosted.org/packages/
|
|
|
|
|
|
|
552 |
]
|
553 |
|
554 |
[[package]]
|
@@ -645,20 +648,20 @@ wheels = [
|
|
645 |
|
646 |
[[package]]
|
647 |
name = "websockets"
|
648 |
-
version = "
|
649 |
-
source = { registry = "https://pypi.org/simple" }
|
650 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
651 |
-
wheels = [
|
652 |
-
{ url = "https://files.pythonhosted.org/packages/
|
653 |
-
{ url = "https://files.pythonhosted.org/packages/
|
654 |
-
{ url = "https://files.pythonhosted.org/packages/
|
655 |
-
{ url = "https://files.pythonhosted.org/packages/
|
656 |
-
{ url = "https://files.pythonhosted.org/packages/
|
657 |
-
{ url = "https://files.pythonhosted.org/packages/
|
658 |
-
{ url = "https://files.pythonhosted.org/packages/
|
659 |
-
{ url = "https://files.pythonhosted.org/packages/
|
660 |
-
{ url = "https://files.pythonhosted.org/packages/
|
661 |
-
{ url = "https://files.pythonhosted.org/packages/
|
662 |
-
{ url = "https://files.pythonhosted.org/packages/
|
663 |
-
{ url = "https://files.pythonhosted.org/packages/
|
664 |
]
|
|
|
60 |
]
|
61 |
|
62 |
[[package]]
|
63 |
+
name = "cc229-diabetes-dataset-app"
|
64 |
version = "0.1.0"
|
65 |
source = { virtual = "." }
|
66 |
dependencies = [
|
|
|
203 |
|
204 |
[[package]]
|
205 |
name = "marimo"
|
206 |
+
version = "0.11.6"
|
207 |
source = { registry = "https://pypi.org/simple" }
|
208 |
dependencies = [
|
209 |
{ name = "click" },
|
|
|
224 |
{ name = "uvicorn" },
|
225 |
{ name = "websockets" },
|
226 |
]
|
227 |
+
sdist = { url = "https://files.pythonhosted.org/packages/08/6d/078848a3dd6a0c7494a41395d2adbbace2662937a6df75117d7d68b10f91/marimo-0.11.6.tar.gz", hash = "sha256:e0c8390ab91f19a65d0b3a4a85468597c5b16e43a42659105531c3c56aec6bfa", size = 10612190 }
|
228 |
wheels = [
|
229 |
+
{ url = "https://files.pythonhosted.org/packages/97/f4/0eecdf87f543f293a1ca93a7ae60e91a4e1e18715fe207b5d68d42b08259/marimo-0.11.6-py3-none-any.whl", hash = "sha256:98c2be11fdf959ee5769808be71e613a40b0b07dc52a4f11834e2f9ec605c547", size = 10951396 },
|
230 |
]
|
231 |
|
232 |
[[package]]
|
|
|
268 |
|
269 |
[[package]]
|
270 |
name = "narwhals"
|
271 |
+
version = "1.27.1"
|
272 |
source = { registry = "https://pypi.org/simple" }
|
273 |
+
sdist = { url = "https://files.pythonhosted.org/packages/5a/d6/1dadff863b95e4ec74eaba7979278e446699532136c74183a398778b1949/narwhals-1.27.1.tar.gz", hash = "sha256:68505d0cee1e6c00382ac8b65e922f8b694a11cbe482a057fa63139de8d0ea03", size = 251670 }
|
274 |
wheels = [
|
275 |
+
{ url = "https://files.pythonhosted.org/packages/ed/ea/dc14822a0a75e027562f081eb638417b1b7845e1e01dd85c5b6573ebf1b2/narwhals-1.27.1-py3-none-any.whl", hash = "sha256:71e4a126007886e3dd9d71d0d5921ebd2e8c1f9be9c405fe11850ece2b066c59", size = 308837 },
|
276 |
]
|
277 |
|
278 |
[[package]]
|
|
|
527 |
|
528 |
[[package]]
|
529 |
name = "scipy"
|
530 |
+
version = "1.15.2"
|
531 |
source = { registry = "https://pypi.org/simple" }
|
532 |
dependencies = [
|
533 |
{ name = "numpy" },
|
534 |
]
|
535 |
+
sdist = { url = "https://files.pythonhosted.org/packages/b7/b9/31ba9cd990e626574baf93fbc1ac61cf9ed54faafd04c479117517661637/scipy-1.15.2.tar.gz", hash = "sha256:cd58a314d92838f7e6f755c8a2167ead4f27e1fd5c1251fd54289569ef3495ec", size = 59417316 }
|
536 |
+
wheels = [
|
537 |
+
{ url = "https://files.pythonhosted.org/packages/53/40/09319f6e0f276ea2754196185f95cd191cb852288440ce035d5c3a931ea2/scipy-1.15.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01edfac9f0798ad6b46d9c4c9ca0e0ad23dbf0b1eb70e96adb9fa7f525eff0bf", size = 38717587 },
|
538 |
+
{ url = "https://files.pythonhosted.org/packages/fe/c3/2854f40ecd19585d65afaef601e5e1f8dbf6758b2f95b5ea93d38655a2c6/scipy-1.15.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:08b57a9336b8e79b305a143c3655cc5bdbe6d5ece3378578888d2afbb51c4e37", size = 30100266 },
|
539 |
+
{ url = "https://files.pythonhosted.org/packages/dd/b1/f9fe6e3c828cb5930b5fe74cb479de5f3d66d682fa8adb77249acaf545b8/scipy-1.15.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:54c462098484e7466362a9f1672d20888f724911a74c22ae35b61f9c5919183d", size = 22373768 },
|
540 |
+
{ url = "https://files.pythonhosted.org/packages/15/9d/a60db8c795700414c3f681908a2b911e031e024d93214f2d23c6dae174ab/scipy-1.15.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:cf72ff559a53a6a6d77bd8eefd12a17995ffa44ad86c77a5df96f533d4e6c6bb", size = 25154719 },
|
541 |
+
{ url = "https://files.pythonhosted.org/packages/37/3b/9bda92a85cd93f19f9ed90ade84aa1e51657e29988317fabdd44544f1dd4/scipy-1.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9de9d1416b3d9e7df9923ab23cd2fe714244af10b763975bea9e4f2e81cebd27", size = 35163195 },
|
542 |
+
{ url = "https://files.pythonhosted.org/packages/03/5a/fc34bf1aa14dc7c0e701691fa8685f3faec80e57d816615e3625f28feb43/scipy-1.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb530e4794fc8ea76a4a21ccb67dea33e5e0e60f07fc38a49e821e1eae3b71a0", size = 37255404 },
|
543 |
+
{ url = "https://files.pythonhosted.org/packages/4a/71/472eac45440cee134c8a180dbe4c01b3ec247e0338b7c759e6cd71f199a7/scipy-1.15.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5ea7ed46d437fc52350b028b1d44e002646e28f3e8ddc714011aaf87330f2f32", size = 36860011 },
|
544 |
+
{ url = "https://files.pythonhosted.org/packages/01/b3/21f890f4f42daf20e4d3aaa18182dddb9192771cd47445aaae2e318f6738/scipy-1.15.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11e7ad32cf184b74380f43d3c0a706f49358b904fa7d5345f16ddf993609184d", size = 39657406 },
|
545 |
+
{ url = "https://files.pythonhosted.org/packages/0d/76/77cf2ac1f2a9cc00c073d49e1e16244e389dd88e2490c91d84e1e3e4d126/scipy-1.15.2-cp313-cp313-win_amd64.whl", hash = "sha256:a5080a79dfb9b78b768cebf3c9dcbc7b665c5875793569f48bf0e2b1d7f68f6f", size = 40961243 },
|
546 |
+
{ url = "https://files.pythonhosted.org/packages/4c/4b/a57f8ddcf48e129e6054fa9899a2a86d1fc6b07a0e15c7eebff7ca94533f/scipy-1.15.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:447ce30cee6a9d5d1379087c9e474628dab3db4a67484be1b7dc3196bfb2fac9", size = 38870286 },
|
547 |
+
{ url = "https://files.pythonhosted.org/packages/0c/43/c304d69a56c91ad5f188c0714f6a97b9c1fed93128c691148621274a3a68/scipy-1.15.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c90ebe8aaa4397eaefa8455a8182b164a6cc1d59ad53f79943f266d99f68687f", size = 30141634 },
|
548 |
+
{ url = "https://files.pythonhosted.org/packages/44/1a/6c21b45d2548eb73be9b9bff421aaaa7e85e22c1f9b3bc44b23485dfce0a/scipy-1.15.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:def751dd08243934c884a3221156d63e15234a3155cf25978b0a668409d45eb6", size = 22415179 },
|
549 |
+
{ url = "https://files.pythonhosted.org/packages/74/4b/aefac4bba80ef815b64f55da06f62f92be5d03b467f2ce3668071799429a/scipy-1.15.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:302093e7dfb120e55515936cb55618ee0b895f8bcaf18ff81eca086c17bd80af", size = 25126412 },
|
550 |
+
{ url = "https://files.pythonhosted.org/packages/b1/53/1cbb148e6e8f1660aacd9f0a9dfa2b05e9ff1cb54b4386fe868477972ac2/scipy-1.15.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd5b77413e1855351cdde594eca99c1f4a588c2d63711388b6a1f1c01f62274", size = 34952867 },
|
551 |
+
{ url = "https://files.pythonhosted.org/packages/2c/23/e0eb7f31a9c13cf2dca083828b97992dd22f8184c6ce4fec5deec0c81fcf/scipy-1.15.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d0194c37037707b2afa7a2f2a924cf7bac3dc292d51b6a925e5fcb89bc5c776", size = 36890009 },
|
552 |
+
{ url = "https://files.pythonhosted.org/packages/03/f3/e699e19cabe96bbac5189c04aaa970718f0105cff03d458dc5e2b6bd1e8c/scipy-1.15.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:bae43364d600fdc3ac327db99659dcb79e6e7ecd279a75fe1266669d9a652828", size = 36545159 },
|
553 |
+
{ url = "https://files.pythonhosted.org/packages/af/f5/ab3838e56fe5cc22383d6fcf2336e48c8fe33e944b9037fbf6cbdf5a11f8/scipy-1.15.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f031846580d9acccd0044efd1a90e6f4df3a6e12b4b6bd694a7bc03a89892b28", size = 39136566 },
|
554 |
+
{ url = "https://files.pythonhosted.org/packages/0a/c8/b3f566db71461cabd4b2d5b39bcc24a7e1c119535c8361f81426be39bb47/scipy-1.15.2-cp313-cp313t-win_amd64.whl", hash = "sha256:fe8a9eb875d430d81755472c5ba75e84acc980e4a8f6204d402849234d3017db", size = 40477705 },
|
555 |
]
|
556 |
|
557 |
[[package]]
|
|
|
648 |
|
649 |
[[package]]
|
650 |
name = "websockets"
|
651 |
+
version = "15.0"
|
652 |
+
source = { registry = "https://pypi.org/simple" }
|
653 |
+
sdist = { url = "https://files.pythonhosted.org/packages/2e/7a/8bc4d15af7ff30f7ba34f9a172063bfcee9f5001d7cef04bee800a658f33/websockets-15.0.tar.gz", hash = "sha256:ca36151289a15b39d8d683fd8b7abbe26fc50be311066c5f8dcf3cb8cee107ab", size = 175574 }
|
654 |
+
wheels = [
|
655 |
+
{ url = "https://files.pythonhosted.org/packages/12/23/be28dc1023707ac51768f848d28a946443041a348ee3a54abdf9f6283372/websockets-15.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d2244d8ab24374bed366f9ff206e2619345f9cd7fe79aad5225f53faac28b6b1", size = 174714 },
|
656 |
+
{ url = "https://files.pythonhosted.org/packages/8f/ff/02b5e9fbb078e7666bf3d25c18c69b499747a12f3e7f2776063ef3fb7061/websockets-15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3a302241fbe825a3e4fe07666a2ab513edfdc6d43ce24b79691b45115273b5e7", size = 172374 },
|
657 |
+
{ url = "https://files.pythonhosted.org/packages/8e/61/901c8d4698e0477eff4c3c664d53f898b601fa83af4ce81946650ec2a4cb/websockets-15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:10552fed076757a70ba2c18edcbc601c7637b30cdfe8c24b65171e824c7d6081", size = 172605 },
|
658 |
+
{ url = "https://files.pythonhosted.org/packages/d2/4b/dc47601a80dff317aecf8da7b4ab278d11d3494b2c373b493e4887561f90/websockets-15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c53f97032b87a406044a1c33d1e9290cc38b117a8062e8a8b285175d7e2f99c9", size = 182380 },
|
659 |
+
{ url = "https://files.pythonhosted.org/packages/83/f7/b155d2b38f05ed47a0b8de1c9ea245fcd7fc625d89f35a37eccba34b42de/websockets-15.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1caf951110ca757b8ad9c4974f5cac7b8413004d2f29707e4d03a65d54cedf2b", size = 181325 },
|
660 |
+
{ url = "https://files.pythonhosted.org/packages/d3/ff/040a20c01c294695cac0e361caf86f33347acc38f164f6d2be1d3e007d9f/websockets-15.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bf1ab71f9f23b0a1d52ec1682a3907e0c208c12fef9c3e99d2b80166b17905f", size = 181763 },
|
661 |
+
{ url = "https://files.pythonhosted.org/packages/cb/6a/af23e93678fda8341ac8775e85123425e45c608389d3514863c702896ea5/websockets-15.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bfcd3acc1a81f106abac6afd42327d2cf1e77ec905ae11dc1d9142a006a496b6", size = 182097 },
|
662 |
+
{ url = "https://files.pythonhosted.org/packages/7e/3e/1069e159c30129dc03c01513b5830237e576f47cedb888777dd885cae583/websockets-15.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c8c5c8e1bac05ef3c23722e591ef4f688f528235e2480f157a9cfe0a19081375", size = 181485 },
|
663 |
+
{ url = "https://files.pythonhosted.org/packages/9a/a7/c91c47103f1cd941b576bbc452601e9e01f67d5c9be3e0a9abe726491ab5/websockets-15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:86bfb52a9cfbcc09aba2b71388b0a20ea5c52b6517c0b2e316222435a8cdab72", size = 181466 },
|
664 |
+
{ url = "https://files.pythonhosted.org/packages/16/32/a4ca6e3d56c24aac46b0cf5c03b841379f6409d07fc2044b244f90f54105/websockets-15.0-cp313-cp313-win32.whl", hash = "sha256:26ba70fed190708551c19a360f9d7eca8e8c0f615d19a574292b7229e0ae324c", size = 175673 },
|
665 |
+
{ url = "https://files.pythonhosted.org/packages/c0/31/25a417a23e985b61ffa5544f9facfe4a118cb64d664c886f1244a8baeca5/websockets-15.0-cp313-cp313-win_amd64.whl", hash = "sha256:ae721bcc8e69846af00b7a77a220614d9b2ec57d25017a6bbde3a99473e41ce8", size = 176115 },
|
666 |
+
{ url = "https://files.pythonhosted.org/packages/e8/b2/31eec524b53f01cd8343f10a8e429730c52c1849941d1f530f8253b6d934/websockets-15.0-py3-none-any.whl", hash = "sha256:51ffd53c53c4442415b613497a34ba0aa7b99ac07f1e4a62db5dcd640ae6c3c3", size = 169023 },
|
667 |
]
|