0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IntelliJとdocker-composeを使いローカル環境を汚さずにflask+postgresql環境を構築する

Last updated at Posted at 2020-12-09

動機と概要

IntelliJ+Dockerでlocalを汚さず開発」を参考にさせていただき、IntelliJとdocker-composeを使いlocal環境を汚さずにflask + postgresql開発環境を作ってみたのでまとめてみました。

環境

ソフトウェア バージョン
Windows 10 Professional -
IntelliJ Ultimate 2020.3
docker desktop community 2.5.0.1

前提条件

  • docker for windowsがインストール済み
  • IntelliJへ下記プラグインがインストール済み
  • dockerプラグイン
  • Pythonプラグイン
  • docker hubへアカウント登録済み
  • IntelliJにdocker for windowsの設定完了済み

作業概要

作業ですがざっくり下記になります。

  1. dockerコマンドを使い、dockerのpythonイメージからflaskを含んだイメージの作成(※)
  2. docker-composeのyamlファイルを作成
  3. IntelliJのSDKに2で作成したyamlを指定
  4. flask

docker-composeをご存知の方なら、
「1.と2.の手順を分ける必要はないのではないか?2.のdocker-composeにまとめれば良いじゃないか。」
と思われるかもしれませんが、IntelliJの仕様なのか、2.にまとめるとエラーを吐いてしまい実行できませんでした。

1. dockerコマンドを使い、dockerのpythonイメージからflaskを含んだイメージの作成

Dockerfileは以下。
pythonイメージにflaskをインストールするため、pipコマンドの実行と
pipへ渡すモジュールのリスト(requirements.txt)ファイルを作成。

Dockerfile
FROM python:3

LABEL version="1.0"
LABEL description="Python Flask"

WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
requirements.txt
# flask
flask
flask_sqlalchemy
# psycopg2 : postgresql driver
psycopg2-binary
psycopg2

上記ファイルを適当なフォルダに保存したら、コマンドプロンプトを起動して
フォルダ上で下記のdocker buildコマンドを実行し、flaskがインストールされた
pythonイメージを作成する。

> docker build -t <docker hubのアカウント名>/pythonflaskcheck .

2. docker-composeのyamlファイルを作成

適当なフォルダへ、下記のdocker-compose.ymlファイルを作成する。

docker-compose.yml
version: '3'

services:

  db1:
    image: postgres:12.4-alpine
    container_name: 'flask_check_db'
    expose:
      - '5432'
    ports:
      - '5432:5432'
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=appdata

  python:
    image: <docker hubのアカウント名>/pythonflaskcheck
    container_name: 'flask_check_app'
    depends_on:
      - db1
    expose:
      - '5000'
    ports:
      - '5000:5000'
    stdin_open: true
    tty: true
    command: /bin/bash

3. IntelliJのSDKに2で作成したyamlを指定

File -> Project Structureをクリック。
※ 手順を飛ばしていますが、事前にIntelliJ上でpythonのプロジェクトを作成しています。

image.png

左ペインからProjectをクリック。
右ペイン上にProject SDKが表示されるので、
リストから Add SDK → Python SDK... をクリック。

image.png
左ペインからDocker Composeをクリック。
Configuration file(s)に、2で作成したdocker-compose.ymlを指定する。
指定すると、Serviceのプルダウンに「db1」「python」がリストされるので、
「python」を選択し、OKボタンをクリックする。
image.png
flaskの起動用pythonファイルを右クリックし、メニューから「Run」をクリックする。
image.png
あとはIntelliJが自動的にdocker-composeを実行して、2.で作成したdocker-compose.ymlをもとに
コンテナを起動し、flaskアプリケーションを起動してくれる。

0
4
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
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?