質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

コンテナ上にuvicornを建て、ブラウザから接続したい。

shunhamm
shunhamm

総合スコア12

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

619閲覧

投稿2022/03/12 07:36

前提・実現したいこと

コンテナ上にuvicornを建て、ブラウザから接続したい。
docker-compose upでサーバーを建て、アクセスした所以下のエラーメッセージが返されました。

発生している問題・エラーメッセージ

イメージ説明

該当のソースコード

dockerfile

# python3.9のイメージをダウンロード FROM python:3.9-buster ENV PYTHONUNBUFFERED=1 WORKDIR /src # pipを使ってpoetryをインストール RUN pip install poetry # poetryの定義ファイルをコピー (存在する場合) COPY pyproject.toml* poetry.lock* ./ # poetryでライブラリをインストール (pyproject.tomlが既にある場合) RUN poetry config virtualenvs.in-project true RUN if [ -f pyproject.toml ]; then poetry install; fi # uvicornのサーバーを立ち上げる ENTRYPOINT ["poetry", "run", "uvicorn", "api.main:app", "--host", "0.0.0.0", "--reload"]

docker

version: '3' services: demo-app: build: . volumes: - .dockervenv:/src/.venv - .:/src ports: - 8000:8000 # ホストマシンのポート8000を、docker内のポート8000に接続する db: image: mysql:8.0 platform: linux/x86_64 # M1 Macの場合必要 environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' # rootアカウントをパスワードなしで作成 MYSQL_DATABASE: 'demo' # 初期データベースとしてdemoを設定 TZ: 'Asia/Tokyo' # タイムゾーンを日本時間に設定 volumes: - mysql_data:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password # MySQL8.0ではデフォルトが"caching_sha2_password"で、ドライバが非対応のため変更 ports: - 33306:3306 # ホストマシンのポート33306を、docker内のポート3306に接続する volumes: mysql_data:

試したこと

  • ホストマシンからcurlコマンドでアクセスしてみる。(念のためローカルホストにも)
% curl http://localhost:8000 curl: (52) Empty reply from server % curl http://0.0.0.0:8000 curl: (52) Empty reply from server
  • コンテナ内からアクセスしてみる。
root@dcc6e28899e7:/src# curl http://localhost:8000/ curl: (7) Failed to connect to localhost port 8000: Connection refused root@dcc6e28899e7:/src# curl http://0.0.0.0:8000/ curl: (7) Failed to connect to 0.0.0.0 port 8000: Connection refused

補足情報

compose upしたときのstatus

docker-compose up [+] Running 2/0 ⠿ Container zenn_todo-demo-app-1 Created 0.0s ⠿ Container zenn_todo-db-1 Created 0.0s Attaching to zenn_todo-db-1, zenn_todo-demo-app-1 zenn_todo-db-1 | 2022-03-12 16:09:58+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.28-1debian10 started. zenn_todo-db-1 | 2022-03-12 16:09:58+09:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' zenn_todo-db-1 | 2022-03-12 16:09:58+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.28-1debian10 started. zenn_todo-db-1 | 2022-03-12T07:09:59.256979Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead. zenn_todo-db-1 | 2022-03-12T07:09:59.257022Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.28) starting as process 1 zenn_todo-db-1 | 2022-03-12T07:09:59.265319Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. zenn_todo-db-1 | 2022-03-12T07:09:59.414832Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. zenn_todo-db-1 | 2022-03-12T07:09:59.639071Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. zenn_todo-db-1 | 2022-03-12T07:09:59.639219Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. zenn_todo-db-1 | 2022-03-12T07:09:59.641019Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. zenn_todo-db-1 | 2022-03-12T07:09:59.673832Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock zenn_todo-db-1 | 2022-03-12T07:09:59.674169Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.28' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. zenn_todo-demo-app-1 | INFO: Will watch for changes in these directories: ['/src'] zenn_todo-demo-app-1 | INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) zenn_todo-demo-app-1 | INFO: Started reloader process [1] using watchgod zenn_todo-demo-app-1 | Process SpawnProcess-1: zenn_todo-demo-app-1 | Traceback (most recent call last): zenn_todo-demo-app-1 | File "/usr/local/lib/python3.9/multiprocessing/process.py", line 315, in _bootstrap zenn_todo-demo-app-1 | self.run() zenn_todo-demo-app-1 | File "/usr/local/lib/python3.9/multiprocessing/process.py", line 108, in run zenn_todo-demo-app-1 | self._target(*self._args, **self._kwargs) zenn_todo-demo-app-1 | File "/src/.venv/lib/python3.9/site-packages/uvicorn/subprocess.py", line 76, in subprocess_started zenn_todo-demo-app-1 | target(sockets=sockets) zenn_todo-demo-app-1 | File "/src/.venv/lib/python3.9/site-packages/uvicorn/server.py", line 60, in run zenn_todo-demo-app-1 | return asyncio.run(self.serve(sockets=sockets)) zenn_todo-demo-app-1 | File "/usr/local/lib/python3.9/asyncio/runners.py", line 44, in run zenn_todo-demo-app-1 | return loop.run_until_complete(main) zenn_todo-demo-app-1 | File "uvloop/loop.pyx", line 1501, in uvloop.loop.Loop.run_until_complete zenn_todo-demo-app-1 | File "/src/.venv/lib/python3.9/site-packages/uvicorn/server.py", line 67, in serve zenn_todo-demo-app-1 | config.load() zenn_todo-demo-app-1 | File "/src/.venv/lib/python3.9/site-packages/uvicorn/config.py", line 458, in load zenn_todo-demo-app-1 | self.loaded_app = import_from_string(self.app) zenn_todo-demo-app-1 | File "/src/.venv/lib/python3.9/site-packages/uvicorn/importer.py", line 21, in import_from_string zenn_todo-demo-app-1 | module = importlib.import_module(module_str) zenn_todo-demo-app-1 | File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module zenn_todo-demo-app-1 | return _bootstrap._gcd_import(name[level:], package, level) zenn_todo-demo-app-1 | File "<frozen importlib._bootstrap>", line 1030, in _gcd_import zenn_todo-demo-app-1 | File "<frozen importlib._bootstrap>", line 1007, in _find_and_load zenn_todo-demo-app-1 | File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked zenn_todo-demo-app-1 | File "<frozen importlib._bootstrap>", line 680, in _load_unlocked zenn_todo-demo-app-1 | File "<frozen importlib._bootstrap_external>", line 850, in exec_module zenn_todo-demo-app-1 | File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed zenn_todo-demo-app-1 | File "/src/./api/main.py", line 3, in <module> zenn_todo-demo-app-1 | from api.routers import task, done zenn_todo-demo-app-1 | File "/src/./api/routers/task.py", line 6, in <module> zenn_todo-demo-app-1 | import api.cruds.task as task_crud zenn_todo-demo-app-1 | File "/src/./api/cruds/task.py", line 4, in <module> zenn_todo-demo-app-1 | import api.schemas.task as task_schema zenn_todo-demo-app-1 | File "/src/./api/schemas/task.py", line 6, in <module> zenn_todo-demo-app-1 | class TaskBase(BaseModel): zenn_todo-demo-app-1 | File "/src/./api/schemas/task.py", line 7, in TaskBase zenn_todo-demo-app-1 | title = Optional[str] = Field(None, example="Pick up clothese") zenn_todo-demo-app-1 | TypeError: '_SpecialForm' object does not support item assignment

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yamap55

2022/03/14 01:16

> zenn_todo-demo-app-1 | File "/src/./api/schemas/task.py", line 7, in TaskBase > zenn_todo-demo-app-1 | title = Optional[str] = Field(None, example="Pick up clothese") > zenn_todo-demo-app-1 | TypeError: '_SpecialForm' object does not support item assignment っと記載されている通り、「api/schemas/task.py」でエラーが出ていますのでこのファイルの内容を記載ください。
shunhamm

2022/03/14 03:59

ご指摘ありがとうございます。こちらのファイルを確認し、構文を間違えているところ発見し修正したところエラーが解消され、サーバーにもアクセスできるようになりました。ありがとうございます。かなり初歩的な所を見落としていたのでお恥ずかしいです。。。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。