dockerize app

This commit is contained in:
2025-06-19 08:22:32 +00:00
parent 8d444df917
commit 8db9b920d9
4 changed files with 134 additions and 0 deletions

25
Dockerfile Normal file
View File

@ -0,0 +1,25 @@
FROM python:3.13-slim
# Set timezone
ARG WTH
ENV WTH=$WTH
ENV TZ="Asia/Taipei"
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Init workspace
RUN mkdir -p /app
WORKDIR /app
# Install dependencies
# Poetry exportation cmd: poetry export --without-hashes --without dev -f requirements.txt -o requirements.tx
COPY ./requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy source copy
COPY ./translator .
# Run app
CMD streamlit run app.py --server.port=8501 --server.enableCORS=false --server.enableXsrfProtection=false
# Build
# docker build -t translator:latest .

9
docker-compose.yml Normal file
View File

@ -0,0 +1,9 @@
services:
app:
image: translator:latest
restart: always
ports:
- 8501:8501
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- GEMINI_API_KEY=${GEMINI_API_KEY}

View File

@ -24,6 +24,9 @@ build-backend = "poetry.core.masonry.api"
[tool.poetry] [tool.poetry]
package-mode = false package-mode = false
[tool.poetry.requires-plugins]
poetry-plugin-export = ">=1.8"
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
pytest = "^8.4" pytest = "^8.4"
ruff = "^0.11" ruff = "^0.11"

97
requirements.txt Normal file
View File

@ -0,0 +1,97 @@
aiohappyeyeballs==2.6.1 ; python_version >= "3.13" and python_version < "4.0"
aiohttp==3.12.8 ; python_version >= "3.13" and python_version < "4.0"
aiosignal==1.3.2 ; python_version >= "3.13" and python_version < "4.0"
altair==5.5.0 ; python_version >= "3.13" and python_version < "4.0"
annotated-types==0.7.0 ; python_version >= "3.13" and python_version < "4.0"
anyio==4.9.0 ; python_version >= "3.13" and python_version < "4.0"
attrs==25.3.0 ; python_version >= "3.13" and python_version < "4.0"
blinker==1.9.0 ; python_version >= "3.13" and python_version < "4.0"
cachetools==5.5.2 ; python_version >= "3.13" and python_version < "4.0"
certifi==2025.4.26 ; python_version >= "3.13" and python_version < "4.0"
cffi==1.17.1 ; python_version >= "3.13" and python_version < "4.0" and platform_python_implementation == "PyPy"
charset-normalizer==3.4.2 ; python_version >= "3.13" and python_version < "4.0"
click==8.2.1 ; python_version >= "3.13" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.13" and python_version < "4.0" and platform_system == "Windows"
dataclasses-json==0.6.7 ; python_version >= "3.13" and python_version < "4.0"
distro==1.9.0 ; python_version >= "3.13" and python_version < "4.0"
filetype==1.2.0 ; python_version >= "3.13" and python_version < "4.0"
frozenlist==1.6.2 ; python_version >= "3.13" and python_version < "4.0"
gitdb==4.0.12 ; python_version >= "3.13" and python_version < "4.0"
gitpython==3.1.44 ; python_version >= "3.13" and python_version < "4.0"
google-ai-generativelanguage==0.6.18 ; python_version >= "3.13" and python_version < "4.0"
google-api-core==2.25.1 ; python_version >= "3.13" and python_version < "4.0"
google-auth==2.40.3 ; python_version >= "3.13" and python_version < "4.0"
googleapis-common-protos==1.70.0 ; python_version >= "3.13" and python_version < "4.0"
greenlet==3.2.2 ; python_version == "3.13" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32")
grpcio-status==1.73.0 ; python_version >= "3.13" and python_version < "4.0"
grpcio==1.73.0 ; python_version >= "3.13" and python_version < "4.0"
h11==0.16.0 ; python_version >= "3.13" and python_version < "4.0"
httpcore==1.0.9 ; python_version >= "3.13" and python_version < "4.0"
httpx-sse==0.4.0 ; python_version >= "3.13" and python_version < "4.0"
httpx==0.28.1 ; python_version >= "3.13" and python_version < "4.0"
idna==3.10 ; python_version >= "3.13" and python_version < "4.0"
jinja2==3.1.6 ; python_version >= "3.13" and python_version < "4.0"
jiter==0.10.0 ; python_version >= "3.13" and python_version < "4.0"
jsonpatch==1.33 ; python_version >= "3.13" and python_version < "4.0"
jsonpointer==3.0.0 ; python_version >= "3.13" and python_version < "4.0"
jsonschema-specifications==2025.4.1 ; python_version >= "3.13" and python_version < "4.0"
jsonschema==4.24.0 ; python_version >= "3.13" and python_version < "4.0"
langchain-community==0.3.24 ; python_version >= "3.13" and python_version < "4.0"
langchain-core==0.3.65 ; python_version >= "3.13" and python_version < "4.0"
langchain-google-genai==2.1.5 ; python_version >= "3.13" and python_version < "4.0"
langchain-ollama==0.3.3 ; python_version >= "3.13" and python_version < "4.0"
langchain-openai==0.3.24 ; python_version >= "3.13" and python_version < "4.0"
langchain-text-splitters==0.3.8 ; python_version >= "3.13" and python_version < "4.0"
langchain==0.3.25 ; python_version >= "3.13" and python_version < "4.0"
langsmith==0.3.45 ; python_version >= "3.13" and python_version < "4.0"
markupsafe==3.0.2 ; python_version >= "3.13" and python_version < "4.0"
marshmallow==3.26.1 ; python_version >= "3.13" and python_version < "4.0"
multidict==6.4.4 ; python_version >= "3.13" and python_version < "4.0"
mypy-extensions==1.1.0 ; python_version >= "3.13" and python_version < "4.0"
narwhals==1.41.0 ; python_version >= "3.13" and python_version < "4.0"
numpy==2.2.6 ; python_version >= "3.13" and python_version < "4.0"
ollama==0.5.1 ; python_version >= "3.13" and python_version < "4.0"
openai==1.88.0 ; python_version >= "3.13" and python_version < "4.0"
orjson==3.10.18 ; python_version >= "3.13" and python_version < "4.0" and platform_python_implementation != "PyPy"
packaging==24.2 ; python_version >= "3.13" and python_version < "4.0"
pandas==2.2.3 ; python_version >= "3.13" and python_version < "4.0"
pillow==11.2.1 ; python_version >= "3.13" and python_version < "4.0"
propcache==0.3.1 ; python_version >= "3.13" and python_version < "4.0"
proto-plus==1.26.1 ; python_version >= "3.13" and python_version < "4.0"
protobuf==6.31.1 ; python_version >= "3.13" and python_version < "4.0"
pyarrow==20.0.0 ; python_version >= "3.13" and python_version < "4.0"
pyasn1-modules==0.4.2 ; python_version >= "3.13" and python_version < "4.0"
pyasn1==0.6.1 ; python_version >= "3.13" and python_version < "4.0"
pycparser==2.22 ; python_version >= "3.13" and python_version < "4.0" and platform_python_implementation == "PyPy"
pydantic-core==2.33.2 ; python_version >= "3.13" and python_version < "4.0"
pydantic-settings==2.9.1 ; python_version >= "3.13" and python_version < "4.0"
pydantic==2.11.5 ; python_version >= "3.13" and python_version < "4.0"
pydeck==0.9.1 ; python_version >= "3.13" and python_version < "4.0"
python-dateutil==2.9.0.post0 ; python_version >= "3.13" and python_version < "4.0"
python-dotenv==1.1.0 ; python_version >= "3.13" and python_version < "4.0"
pytz==2025.2 ; python_version >= "3.13" and python_version < "4.0"
pyyaml==6.0.2 ; python_version >= "3.13" and python_version < "4.0"
referencing==0.36.2 ; python_version >= "3.13" and python_version < "4.0"
regex==2024.11.6 ; python_version >= "3.13" and python_version < "4.0"
requests-toolbelt==1.0.0 ; python_version >= "3.13" and python_version < "4.0"
requests==2.32.3 ; python_version >= "3.13" and python_version < "4.0"
rpds-py==0.25.1 ; python_version >= "3.13" and python_version < "4.0"
rsa==4.9.1 ; python_version >= "3.13" and python_version < "4.0"
six==1.17.0 ; python_version >= "3.13" and python_version < "4.0"
smmap==5.0.2 ; python_version >= "3.13" and python_version < "4.0"
sniffio==1.3.1 ; python_version >= "3.13" and python_version < "4.0"
sqlalchemy==2.0.41 ; python_version >= "3.13" and python_version < "4.0"
streamlit==1.45.1 ; python_version >= "3.13" and python_version < "4.0"
tenacity==9.1.2 ; python_version >= "3.13" and python_version < "4.0"
tiktoken==0.9.0 ; python_version >= "3.13" and python_version < "4.0"
toml==0.10.2 ; python_version >= "3.13" and python_version < "4.0"
tornado==6.5.1 ; python_version >= "3.13" and python_version < "4.0"
tqdm==4.67.1 ; python_version >= "3.13" and python_version < "4.0"
typing-extensions==4.14.0 ; python_version >= "3.13" and python_version < "4.0"
typing-inspect==0.9.0 ; python_version >= "3.13" and python_version < "4.0"
typing-inspection==0.4.1 ; python_version >= "3.13" and python_version < "4.0"
tzdata==2025.2 ; python_version >= "3.13" and python_version < "4.0"
urllib3==2.4.0 ; python_version >= "3.13" and python_version < "4.0"
watchdog==6.0.0 ; python_version >= "3.13" and python_version < "4.0"
yarl==1.20.0 ; python_version >= "3.13" and python_version < "4.0"
zstandard==0.23.0 ; python_version >= "3.13" and python_version < "4.0"