質問編集履歴

1

Dockerfileやpyproject.toml、ディレクトリ構成の追記

2023/01/05 13:06

投稿

Luna_rab
Luna_rab

スコア17

test CHANGED
File without changes
test CHANGED
@@ -2,12 +2,120 @@
2
2
 
3
3
  fast-api + postgreSQL を使用してapiサーバを作成しようとしています。
4
4
  ソースコードを書き終え、`docker compose`を使用してコンテナを立ち上げようとしたのですが、うまくポートがつながらずサーバに通信することができません。
5
+
6
+ 開発は asdf + poetry で行っています。
5
7
 
6
8
  ### 実現したいこと
7
9
 
8
10
  - WSLやWindowsからコンテナ上で動いているサーバに`localhost`でアクセスできるようにしたい。
9
11
 
10
12
  ### 該当のソースコード
13
+ ディレクトリ構成は以下です。
14
+ ```
15
+ .
16
+ ├ radish_db/
17
+ │ ├ main.py
18
+
19
+ ├ docker/
20
+ │ ├ radish_db
21
+ │ │ └ Dockerfile
22
+
23
+ ├ docker-compose.yaml
24
+ ├ pyproject.toml
25
+ ```
26
+
27
+ pyproject.toml
28
+ ```toml
29
+ [tool.poetry]
30
+ name = "radish_db"
31
+ version = "0.1.0"
32
+ description = ""
33
+ authors = ["*********"]
34
+
35
+ [tool.poetry.dependencies]
36
+ python = "^3.10"
37
+ fastapi = {extras = ["all"], version = "^0.88.0"}
38
+ sqlalchemy = "^1.4.45"
39
+ pyhumps = "^3.8.0"
40
+ psycopg2 = "^2.9.5"
41
+
42
+ [tool.poetry.group.dev.dependencies]
43
+ flake8 = "^6.0.0"
44
+ black = "^22.12.0"
45
+ isort = "^5.11.4"
46
+ mypy = "^0.991"
47
+ pytest = "^7.2.0"
48
+
49
+ [build-system]
50
+ requires = ["poetry-core>=1.0.0"]
51
+ build-backend = "poetry.core.masonry.api"
52
+
53
+ [tool.black]
54
+ line-length = 120
55
+ exclude = '''
56
+ (
57
+ /(
58
+ \.eggs
59
+ |\.git
60
+ |\.mypy_cache
61
+ |\.venv
62
+ |build
63
+ |dist
64
+ )/
65
+ | snapshots/snap_.*\.py
66
+ | .*\.conf\.py
67
+ )
68
+ '''
69
+
70
+ [tool.isort]
71
+ # https://black.readthedocs.io/en/stable/compatible_configs.html#isort
72
+ multi_line_output = 3
73
+ include_trailing_comma = true
74
+ force_grid_wrap = 0
75
+ use_parentheses = true
76
+ ensure_newline_before_comments = true
77
+ line_length = 120
78
+ skip_glob = [
79
+ ".venv",
80
+ "**/snapshots/snap_*.py",
81
+ "*.conf.py",
82
+ ]
83
+ ```
84
+
85
+ Dockerfile
86
+ ```Dockerfile
87
+ FROM python:3.10-bullseye AS deps
88
+ RUN apt-get update && apt-get install -y \
89
+ curl \
90
+ libpq-dev # psycopg2 \
91
+ && apt-get clean \
92
+ && rm -rf /var/lib/apt/lists/*
93
+
94
+
95
+ RUN curl -sSL https://install.python-poetry.org | POETRY_HOME=/etc/poetry python3 - --version 1.3.1
96
+
97
+ WORKDIR /app
98
+ COPY ./pyproject.toml ./poetry.lock /app/
99
+ RUN /etc/poetry/bin/poetry export -f requirements.txt --output requirements.txt
100
+
101
+
102
+ # ---
103
+ FROM python:3.10-bullseye
104
+ RUN apt-get update \
105
+ && apt-get install -y --no-install-recommends \
106
+ libpq5 \
107
+ && apt-get clean \
108
+ && rm -rf /var/lib/apt/lists/*
109
+
110
+ WORKDIR /app
111
+
112
+ COPY --from=deps /app/requirements.txt /app/requirements.txt
113
+ RUN pip install --upgrade pip
114
+ RUN pip install --no-cache-dir -r requirements.txt
115
+
116
+ COPY ./ /app
117
+ ```
118
+
11
119
  docker-compose.yaml
12
120
  ```yaml
13
121
  version: '3'
@@ -66,4 +174,5 @@
66
174
  Windows10 Home
67
175
  WSL2 Ubuntu 20.04.4
68
176
  Docker version 20.10.21
69
-
177
+ Python 3.10.8
178
+ Poetry (version 1.3.1)