matsuap commited on
Commit
633c3f1
·
verified ·
1 Parent(s): 29df0bb

Upload 4 files

Browse files
Files changed (4) hide show
  1. Dockerfile +29 -0
  2. requirements.txt +2 -0
  3. workbook.db +0 -0
  4. workbook_server.py +33 -0
Dockerfile ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Start of Selection
2
+ # ベースイメージとしてPythonを使用
3
+ FROM python:3.10
4
+
5
+ # 新しいユーザーを作成
6
+ RUN useradd -m -u 1000 user
7
+
8
+ # 作成したユーザーを使用
9
+ USER user
10
+
11
+ # ホームディレクトリを設定
12
+ ENV HOME=/home/user
13
+
14
+ # PATHにpipのインストールディレクトリを追加
15
+ ENV PATH=$HOME/.local/bin:$PATH
16
+
17
+ # 作業ディレクトリを設定
18
+ WORKDIR $HOME/app
19
+
20
+ # アプリケーションのコードをコンテナにコピー
21
+ COPY --chown=user . $HOME/app
22
+
23
+ # 必要なパッケージをインストール
24
+ COPY requirements.txt $HOME/app
25
+ RUN pip install --no-cache-dir --upgrade -r requirements.txt
26
+
27
+ # FastAPIアプリケーションを起動
28
+ CMD ["uvicorn", "workbook_server:app", "--host", "0.0.0.0", "--port", "7860"]
29
+ # End of Selection
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ fastapi==0.115.5
2
+ uvicorn==0.30.6
workbook.db ADDED
Binary file (225 kB). View file
 
workbook_server.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import uvicorn
2
+ from contextlib import asynccontextmanager
3
+ import sqlite3
4
+ from fastapi import FastAPI
5
+ from fastapi.responses import JSONResponse
6
+
7
+ @asynccontextmanager
8
+ async def lifespan(app: FastAPI):
9
+ print("startup event")
10
+ yield
11
+ print("shutdown event")
12
+
13
+ app = FastAPI(lifespan=lifespan)
14
+
15
+ DATABASE = 'workbook.db'
16
+
17
+ def get_db():
18
+ db = getattr(app.state, '_database', None)
19
+ if db is None:
20
+ db = app.state._database = sqlite3.connect(DATABASE)
21
+ return db
22
+
23
+ @app.get('/api/chapters')
24
+ def get_chapters():
25
+ db = get_db()
26
+ cursor = db.cursor()
27
+ cursor.execute("SELECT chapter, chapter_name FROM chapter")
28
+ chapters = cursor.fetchall()
29
+ chapter_list = [{"chapter_number": row[0], "chapter_name": row[1]} for row in chapters]
30
+ return JSONResponse(content=chapter_list)
31
+
32
+ if __name__ == '__main__':
33
+ uvicorn.run(app, host="127.0.0.1", port=8000, log_level="debug")