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

More than 1 year has passed since last update.

Docker環境構築の個人的テンプレート

Last updated at Posted at 2024-09-01

概要

DockerでPython環境とDBを構築する際のテンプレート

いつもディレクトリ構成やファイルマウントどうするか悩んでいたのでテンプレートを作成した.

今後アップデートする可能性あり.

ディレクトリ構成

C:.
├─app           # アプリケーション用のコードを格納
└─docker        # dockerで使用するファイルやディレクトリを格納
    ├─app       # appコンテナの設定ファイルを格納
    └─database  # databaseコンテナで使用するファイルやディレクトリを格納
        ├─data  # databaseコンテナのデータを永続化するためのディレクトリ
        └─init  # コンテナ起動時に実行するSQLファイルを格納

主なファイル

Dockerfile

  • アプリケーションサーバー用の設定を記述
  • rootではなく一般ユーザーで実行できるようにする
FROM python:3.12-slim

ARG USERNAME=app-user

# ユーザーを作成し、そのユーザーのホームディレクトリを作成
RUN useradd -ms /bin/bash $USERNAME

# 作業ディレクトリを設定
WORKDIR /home/$USERNAME/app

# ユーザーを変更
USER $USERNAME

# requirements.txt をコピー
COPY requirements.txt /home/$USERNAME/app/

# pip をアップグレードし、必要なパッケージをインストール
RUN pip install --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt

docker-compose.yml

  • データベースとアプリケーションサーバを定義
services:
  database:
    image: postgres:14
    container_name: database
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
      POSTGRES_DB: root
    ports:
      - "5432:5432"
    volumes:
      - ./database/data:/var/lib/postgresql/data
      - ./database/init:/docker-entrypoint-initdb.d
  app:
    build: ./app
    container_name: app
    depends_on:
      - database
    volumes:
      - ../app/:/home/app-user/app/
    tty: true

コンテナ起動

dockerディレクトリに移動

cd docker

コンテナ起動

docker compose up -d

appコンテナ

appコンテナ接続

docker compose exec app /bin/bash

プログラム実行

python app.py

databaseコンテナ

databaseコンテナ接続

docker compose exec database /bin/bash

データベース接続

psql -U root

コンテナ削除

docker compose down
0
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
0
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?