Skip to content

Commit 8a47be8

Browse files
committed
fix: dockerfile
1 parent 032bd8a commit 8a47be8

File tree

10 files changed

+650
-399
lines changed

10 files changed

+650
-399
lines changed

.env.example

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
DOCKER_IMAGE=project-template
1+
PROJECT_NAME=project-template
22
DOCKER_SHM_SIZE=4g
3-
DOCKER_SSH_AUTH_SOCK=/ssh-agent

Dockerfile

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
FROM python:3.10
1+
FROM ubuntu:22.04
22

33
ENV LANG=C.UTF-8 \
44
LANGUAGE=en_US \
5-
PYTHONPATH="/root/workspace/src:$PYTHONPATH"
5+
PYTHONPATH="/root/workspace:$PYTHONPATH" \
6+
DEBIAN_FRONTEND=noninteractive
67

7-
WORKDIR /root/workspace
8+
# Pythonのインストール
9+
RUN apt-get update && apt-get install -y python3.10 python3-pip \
10+
&& ln -s /usr/bin/python3.10 /usr/bin/python \
11+
&& rm -rf /var/lib/apt/lists/*
812

913
# システム依存のライブラリをインストール
1014
RUN apt-get update && apt-get install -y \
@@ -15,24 +19,33 @@ RUN apt-get update && apt-get install -y \
1519
RUN pip install --no-cache-dir --upgrade pip && \
1620
pip install --no-cache-dir notebook==6.4.6 jupyter_contrib_nbextensions jupyter_nbextensions_configurator
1721

18-
# Jupyterのnbextensionsをインストールし、nbextensions_configuratorを有効化
22+
# jupyter notebookの設定
23+
## Jupyterのnbextensionsをインストールし、nbextensions_configuratorを有効化
1924
RUN jupyter contrib nbextension install --system && \
2025
jupyter nbextensions_configurator enable --system
2126

22-
# 特定のnbextensionsを有効にする
27+
## 特定のnbextensionsを有効にする
2328
RUN jupyter nbextension enable codefolding/main && \
2429
jupyter nbextension enable contrib_nbextensions_help_item/main && \
2530
jupyter nbextension enable code_font_size/code_font_size && \
2631
jupyter nbextension enable collapsible_headings/main && \
2732
jupyter nbextension enable move_selected_cells/main && \
2833
jupyter nbextension enable printview/main
2934

30-
# Poetryをインストール
31-
RUN pip install --upgrade poetry
35+
WORKDIR /root/workspace
36+
37+
# Poetryのインストールと依存関係のインストール
38+
RUN pip install --no-cache-dir --upgrade pip \
39+
&& pip install --upgrade poetry
3240

3341
# pyproject.toml、poetry.lock、poetry.tomlをコピーする
3442
COPY pyproject.toml poetry.lock poetry.toml $WORKDIR/
3543

44+
# Clear cache to free up space
45+
RUN apt-get clean \
46+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
47+
3648
RUN poetry install --no-root
3749

50+
# Jupyter notebookの設定
3851
RUN python -m ipykernel install --user --name python3.10 --display-name "Python 3.10"

app/main.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from app.utils import logger, settings
2+
3+
4+
def main():
5+
logger.info(f"Hello, {settings.PROJECT_NAME}!")
6+
7+
8+
if __name__ == "__main__":
9+
main()

app/utils/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from app.utils.config import Settings
2+
from app.utils.log import Logger
3+
4+
settings = Settings()
5+
logger = Logger("").logger

app/utils/config.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from pydantic_settings import BaseSettings
2+
3+
4+
class Settings(BaseSettings):
5+
PROJECT_NAME: str
6+
DOCKER_SHM_SIZE: str
7+
8+
class Config:
9+
env_file = ".env"
10+
env_file_encoding = "utf-8"
11+
12+
def __init__(self, **data):
13+
super().__init__(**data)

app/utils/log.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import logging
2+
import os
3+
from datetime import datetime
4+
from logging import DEBUG, Formatter, StreamHandler, getLogger
5+
6+
import pytz
7+
8+
9+
class Logger:
10+
def __init__(self, name):
11+
self.logger = getLogger(name)
12+
13+
log_level = os.getenv("LOGGING_LEVEL", "DEBUG").upper()
14+
numeric_level = getattr(logging, log_level, DEBUG)
15+
16+
self.jst = pytz.timezone("Asia/Tokyo")
17+
self.set_logger(numeric_level)
18+
19+
# タイムゾーンを日本時間に設定するためのカスタム関数
20+
def jst_time(self, *args):
21+
return datetime.now(self.jst).timetuple()
22+
23+
def set_logger(self, numeric_level):
24+
self.logger.setLevel(numeric_level)
25+
26+
# コンソール出力のためのハンドラを設定
27+
console_handler = StreamHandler()
28+
formatter = Formatter(
29+
"%(asctime)s : %(levelname)s : %(filename)s - %(message)s"
30+
)
31+
formatter.converter = self.jst_time # 日本時間を使用するように設定
32+
console_handler.setFormatter(formatter)
33+
34+
# ロガーにコンソールハンドラを追加
35+
self.logger.addHandler(console_handler)

docker-compose.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
version: "3.3"
22
services:
33
project:
4-
build: .
4+
build:
5+
context: .
6+
dockerfile: ./Dockerfile
57
volumes:
68
- .:/root/workspace
79
env_file:
810
- .env
911
tty: true # retain container up
1012
command: /bin/bash
11-
shm_size: $DOCKER_SHM_SIZE
13+
shm_size: ${DOCKER_SHM_SIZE}

poetry.lock

Lines changed: 561 additions & 382 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ readme = "README.md"
77

88
[tool.poetry.dependencies]
99
python = "^3.10"
10+
pydantic-settings = "^2.4.0"
11+
pytz = "^2024.1"
1012

1113

1214
[tool.poetry.group.dev.dependencies]

src/main.py

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)