見出し画像

Docker×PythonでWebアプリの開発環境整えてみた

こんにちは、やすです。
今回は、「Docker×Pythonで開発環境整えてみた」についてお話したいと思います。

ぼくは現在、エンジニアとして働いていますが、ずっとテストばっかりの毎日です。

ほんとは開発がやりたい!

ということで、家でなにか開発できないかなと思い、まずは環境構築を始めることにしました。

会社では、Javaの環境構築をしました。
で、ソフトもエクリプスを使ってやっていますが、エクリプスがとにかく重い。

ということで、違う言語で、好きなVScodeを使って開発をやりたいということで、Python×Dockerにたどりつきました。

この記事では、Dockerの魅力について、そして実際の環境構築で作ったファイルを載せていきたいと思います。

ちなみにDockerについて初めは何もわからなかったですが、以下の1冊を買って読み、今はネットで調べながら勉強しています。

Dockerの魅力

1.自分のパソコンに色々ダウンロードしなくていい

1つ目の魅力としては、「自分のパソコンに色々ダウンロードしなくていい」ということ。

開発環境を整えるときは、基本的にパソコンに色々ダウンロードしないといけません。(今回でいえばPythonなど)

ただ、Dockerがあればパソコンではなく、Docker内にダウンロードできるため、パソコンをきれいに保つことができます。

2.同じ環境を再現しやすい

2つ目の魅力としては、「同じ環境を再現しやすい」ということ。
WindowsでもMacでも基本的には、Dockerをインストールして、Dockerfileやdocker-compose.ymlといったファイルを同じように作るだけで、同じ開発環境を整えることができます。

これって本当にすごくて、ぼくの会社だと環境構築にDockerは使わないため、同じ環境を作るにはいろいろなものをインストールや設定して、環境構築しないといけません。

その過程でミスが起こったり、なぜか動かないなんてこともしばしばあります。

Dockerを使えば、最初さえ乗り越えれたらあとは楽に環境構築できるというわけです。

Pythonの環境構築

ではここから実際のDockerfileを置いていきたいと思います。

ディレクトリ構成

まずはディレクトリ構成から。

ディレクトリ構成は以下のようになっています。

.
├── app
│   ├── __pycache__
│   │   ├── __init__.cpython-312.pyc
│   │   └── app.cpython-312.pyc
│   ├── static
│   │   ├── css
│   │   │   ├── common.css
│   │   │   ├── login.css
│   │   │   ├── ress.css
│   │   │   ├── reverseForLogin.css
│   │   │   └── signUp.css
│   │   └── js
│   │       ├── login.js
│   │       ├── reverseForLogin.js
│   │       └── signUp.js
│   ├── templates
│   │   ├── login.html
│   │   ├── reverseForLogin.html
│   │   ├── signup.html
│   │   └── top.html
│   ├── views
│   │   ├── __init__.
│   │   ├── login.py
│   │   └── registration.py
│   ├── __init__.
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
├── run.py
└── 基本設計書


Staticの中には、CSSとJSのファイルを作ります。

templatesの中にはhtmlファイルを作ります。
そして、viewsの中にパイソンファイルを作っていくという感じです。

そして、Dockerfileとdocker-compose.ymlファイルは直下に置きます。

Dockerfile

Dockerfileは以下のようにします。

FROM python:3

# WORKDIRを使用して、必要なディレクトリを作成し、ワーキングディレクトリとして設定
WORKDIR /opt/flask-app

# requirements.txtをコピー
COPY requirements.txt /tmp

# 依存関係のインストール
RUN pip install --no-cache-dir -r /tmp/requirements.txt

# ワーキングディレクトリを指定することで、RUN mkdirは不要になります。

docker-compose.yml

docker-compose.ymlファイルは以下のようにします。

version: '3.9'

services:
  flask-app:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - ".:/opt/flask-app"  # プロジェクトディレクトリ全体をマウント
    tty: true
    environment:
      TZ: Asia/Tokyo
      FLASK_APP: /opt/flask-app/run.py  # Flaskアプリケーションの起動ポイント
      FLASK_ENV: development
    command: flask run --host 0.0.0.0 --port 8000
    depends_on:
      - db
    platform: linux/amd64

  db:
    image: mysql:5.7
    volumes:
      - db-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    platform: linux/x86_64

volumes:
  db-data:

他のファイルの詳細は、

こちらに載せているので、ぜひ参考にしてください。

まとめ

以上、「Docker×PythonでWebアプリの開発環境整えてみた」についてでした。

ぼくもDockerは勉強中で、わからないことがたくさんありますが、とにかくDockerは魅力的なツールだなと感じています。

最後まで読んでいただきありがとうございました。
ではまた。

この記事が参加している募集

仕事について話そう

この記事が気に入ったらサポートをしてみませんか?