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?

【docker-compose.yaml】Dockerの設定ファイル一覧(特にDB系)

Posted at

概要

こちらの本を参考に、pythonやDB系のツールのdocker-compose.yamldocker-compose.yml、またはcompose.yml)の設定ファイルの一覧を備忘として残します。

参考にしている本の設定ファイルをそのまま、にしているか所もありますが、私の経験をもとにより使いやすくなるような設定もしています。

本記事で紹介しているdocker-compose.yaml設定ファイルの一覧

  • DjangoとPostgreSQL
    • DjangoとPostgreSQLをつなげて動くサーバ
  • Flask
    • Flaskが動くサーバ
  • mariadb
    • MariaDBが動くサーバ
  • mariadbとphpmyadmin
    • MariaDBとそれをSQLクライアントで接続して、SQLをたたけるようにしているdocker-compose.yamlの設定
  • postgresql
    • PostgreSQLが動くサーバ
  • postgresqlとpgadmin4
    • PostgreSQLとそれをSQLクライアントで接続して、SQLをたたけるようにしているdocker-compose.yamlの設定

Github

DjangoとPostgreSQL

  • DjangoとPostgreSQLをつなげて動くサーバ
Dockerfile
FROM python:3.10
WORKDIR /code
ADD requirements.txt /code/
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
docker-compose.yaml
services:
  db:
    image: postgres:14.2
    environment:
      POSTGRES_DB: testdb
      POSTGRES_USER: testuser
      POSTGRES_PASSWORD: testpass
    volumes:
      - db-data:/var/lib/postgresql/data

  web:
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - db
    ports:
      - "8000:8000" # 「http://localhost:8000/」
    volumes:
      - .:/code

volumes:
  db-data:
requirements.txt
Django
psycopg2-binary
manage.py
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

Flask

  • Flaskが動くサーバ
Dockerfile
FROM python:3.10
WORKDIR /usr/src/app
RUN pip install flask==2.3.1
CMD ["flask", "run", "--host=0.0.0.0", "--debug"]
docker-compose.yaml
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: flask-container
    ports:
      - "5000:5000" # 「http://localhost:5000/」
    volumes:
      - ./src:/usr/src/app
src/manage.py
from flask import Flask

app = Flask(__name__)


@app.route("/")
def hello_flask() -> str:
	return "hello flask!" # ブラウザに hello flask を表示する
docker-compose.yaml
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: flask-container
    ports:
      - "5000:5000" # 「http://localhost:5000/」
    volumes:
      - ./src:/usr/src/app

mariadb

  • MariaDBが動くサーバ
docker-compose.yaml
# DBを使うためには、ユーザ名やパスワードの設定が必要である.

# MariaDBの主な環境変数は
# - MARIADB_ROOT_PASSWORD : ルートユーザのパスワード
# - MARIADB_DATABASE : データベース名
# - MARIADB_USER : データベースのユーザ名
# - MARIADB_PASSWORD : データベースのパスワード


services:
  mariadb:
    image: mariadb:10.7
    container_name: mariadb-container
    environment:
      MARIADB_ROOT_PASSWORD: rooptpassword
      MARIADB_DATABASE: testdb
      MARIADB_USER: testuser
      MARIADB_PASSWORD: testpass
    volumes:
      - db-data:/var/lib/mysql

# 通常はコンテナを削除した時に、コンテナのデータも一緒に削除されてしまう.
# それを避けるために、ボリュームの永続化をする.
# 永続化したいディレクトリを以下のvolumesで定義しておく.
# 定義する時は、ホスト側(ローカル側)のPCのディレクトリを指定しておく.
volumes:
  db-data:

mariadbとphpmyadmin

  • MariaDBとそれをSQLクライアントで接続して、SQLをたたけるようにしているdocker-compose.yamlの設定
docker-compose.yaml
# DBを使うためには、ユーザ名やパスワードの設定が必要である.

# MariaDBの主な環境変数は
# - MARIADB_ROOT_PASSWORD : ルートユーザのパスワード
# - MARIADB_DATABASE : データベース名
# - MARIADB_USER : データベースのユーザ名
# - MARIADB_PASSWORD : データベースのパスワード


services:
  db:
    image: mariadb:10.7
    environment:
      MARIADB_ROOT_PASSWORD: rootpass
      MARIADB_DATABASE: tetsdb
      MARIADB_USER: testuser
      MARIADB_PASSWORD: testpass
    volumes:
      - db-data:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin:5.2
    depends_on:
      - db
    environment:
      PMA_HOST: db # データベースのホスト名。MariaDBのコンテナの名前を設定する.
      PMA_USER: testuser # データベースのユーザ名。上で設定したMariaDBのユーザ名を設定する.
      PMA_PASSWORD: testpass # データベースのパス。上で設定したMariaDBのパスワードを設定する.
    ports:
      - "8080:80" # ブラウザで「http://localhost:8080/」
    volumes:
      - phpmyadmin-data:/sessions

volumes:
  db-data:
  phpmyadmin-data:

postgresql

  • PostgreSQLが動くサーバ
docker-compose.yaml
# DBを使うためには、ユーザ名やパスワードの設定が必要である.

# PostgreSQLの主な環境変数は
# - POSTGRES_DB : データベース名
# - POSTGRES_USER : データベースのユーザ名
# - POSTGRES_PASSWORD : データベースのパスワード


services:
  db:
    image: postgres:14.2
    environment:
      POSTGRES_DB: testdb
      POSTGRES_USER: testuser
      POSTGRES_PASSWORD: testpass
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

postgresqlとpgadmin4

  • PostgreSQLとそれをSQLクライアントで接続して、SQLをたたけるようにしているdocker-compose.yamlの設定
docker-compose.yaml
# DBを使うためには、ユーザ名やパスワードの設定が必要である.

# PostgreSQLの主な環境変数は
# - POSTGRES_DB : データベース名
# - POSTGRES_USER : データベースのユーザ名
# - POSTGRES_PASSWORD : データベースのパスワード


services:
  db:
    image: postgres:14.2
    environment:
      POSTGRES_DB: testdb
      POSTGRES_USER: testuser
      POSTGRES_PASSWORD: testpass
    volumes:
      - db-data:/var/lib/postgresql/data

  pgadmin4:
    image: dpage/pgadmin4:8.13
    depends_on:
      - db
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@gmail.com # 【実際に自分が使用できるメアド】
      PGADMIN_DEFAULT_PASSWORD: pass
    ports:
      - "8080:80" # ブラウザで「http://localhost:8080/」
    volumes:
      - pgadmin4-data:/var/lib/pgadmin

volumes:
  db-data:
  pgadmin4-data:

まとめ

  • Dockerを使う系のファイルを参考書籍を基にまとめてみました。
  • docker-compose.yamlって今はcompose.yamlでも良いとのことらしいです。Dockerのバージョンが変わり、compose.yamlが今は推奨で、docker-compose.yamlが非推奨(知らなかったです..しかし、docker-compose.yamlの方が書きなれているので、今回はずっとファイル名を古い名前でやってました。)
  • 今後、上記していないdockerコンテナ用の設定ファイルも作成次第、Githubにも随時更新をしていこうと思っています。
    • 特に、pythonやjupyterなど、データサイエンスでよく使う系のコンテナを作成したいと思っています。
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?