1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flaskをdockerで立ち上げようとしたら色々エラーが出て苦しんだ記録

Last updated at Posted at 2024-02-26

エラーログをちゃんと見て一瞬で解決したので、自慢がてら久々に記事を書いてみようと思った次第です。

やりたいこと

以下のDockerfileを準備して、MacOS上でFlaskを起動したい
Dockerfileは docker-compose から読み込む形にする

遭遇したこと

Flaskが5000ポートで上手く立ち上がらなかったので困った。。。

環境

MacOS Sonoma 14.2.1
Docker version 24.0.7

Dockerfile

FROM python:3

RUN apt-get update
RUN pip install --upgrade pip
RUN mkdir /usr/src/app
ADD . /usr/src/app
WORKDIR /usr/src/app
COPY ./requirements.txt /usr/src/app

RUN pip install -r requirements.txt

docker-compose

version: '3' # composeファイルのバージョン
services:
  backend:
    container_name: backend
    build:
      context: .
      dockerfile: ./build/Dockerfile
    volumes:
      - ./backend:/usr/src/app
    tty: true
    environment:
      FLASK_APP: apps.app
      DEBUG: True
      TZ: Asia/Tokyo
    ports:
      - 5000:5000
    working_dir: /usr/src/app
    command: bash -c "flask run --host=0.0.0.0"

こんなん準備して、とりあえずFlask環境構築するかー。
といういつものサクサク作るノリでやってみました。

作業内容とログ

実施コマンド

$ docker compose up -d --build

[+] Running 1/1
 ✔ Container backend Created                                                                          0.0s
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5000 -> 0.0.0.0:0: listen tcp 0.0.0.0:5000: bind: address already in use

おー。まさかのエラーログ。
5000ポートを誰かが使ってるので犯人探し開始

sudo lsof -P -i:5000
COMMAND   PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ControlCe 675 gessy0129    8u  IPv4 0xee030b0cd4ce567b      0t0  TCP *:5000 (LISTEN)
ControlCe 675 gessy0129    9u  IPv6 0xee030b08260f71eb      0t0  TCP *:5000 (LISTEN)

ControlCeって誰・・。

まぁ、見覚えがないCOMMANDかつUSERがPCのユーザー、そして、IPv4とIPv6があるという事は、
・MacのOSが提供してる機能である
・ネットワーク系の機能である
という絞り込みが出来るので、後はググれば問題なし

参考までにググったキーワードは
mac controlcenter port 5000

ググった結果、
このAirPlayレシーバーというヤツが5000番、7000番を使うやつらしい。
そんなん使わないで欲しい。。。

スクリーンショット 2024-02-26 9.56.21.png

対処方法

このチェックボックスをOFFにすればオッケー
ついでにそれ以外の共有系の設定も見直してます

チェックボックスを外してさえあげれば問題なく起動出来ます。

$ docker compose up -d

[+] Running 1/1
 ✔ Container backend   Started                                                                          0.2s

これでとりあえず問題なし。

蛇足

・どうしてもAirPlayレシーバーを使いたい
・Flaskに5000を使って欲しい
という場合は、

Flask起動後にAirPlayレシーバーをONにする

という事をすれば7000番のPortを使ってくれるみたいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?