Dockerコンテナ作成時にvolumeを永続化したい、また任意のボリュームを作成する方法を前回まとめました。
今回は、「docker-compose」を利用してボリュームを作成、マウントするコードをまとめました。
作成環境は「CentOS8」となります。
「docker-compose」のvolume作成方法
Dockerのvolumesはあくまで共有になります。
以下では「postgreSQL」コンテナ上で、ホストディレクトリ直下の「db-data」ディレクトリと、「postgresSQL」コンテナ側の「/var/lib/postgresql/data」にマウントします。
これを「docker-compose」で実施します。
$ cat docker-compose.yml version: '3' services: db: image: postgres ports: - "5432:5432" environment: POSTGRES_PASSWORD: postgres volumes: - ./db-data:/var/lib/postgresql/data web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db volumes: db-data: $
「docker-compose」でコンテナ作成
上記で、「docker-compose」を作成したら、プロジェクトを作成します。
$ docker-compose run web django-admin startproject composeexample .
正常に作成されると以下で「db-data」のボリュームが作成されていることが確認できます。
$ ll total 44 -rw-r--r-- 1 root root 174 Apr 22 19:53 Dockerfile drwxr-xr-x 3 root root 4096 Apr 23 13:58 composeexample drwx------ 19 systemd-coredump root 4096 Apr 26 12:10 db-data -rw-r--r-- 1 root root 393 Apr 26 12:09 docker-compose.yml -rwxr-xr-x 1 root root 634 Apr 23 13:53 manage.py -rw-r--r-- 1 root root 25 Apr 12 16:59 requirements.txt $
「db-data」内のデータがpostgresqlのデータが共有されていることが確認できます。
$ ll db-data/ total 124 -rw------- 1 systemd-coredump input 3 Apr 26 12:04 PG_VERSION drwx------ 5 systemd-coredump input 4096 Apr 26 12:04 base drwx------ 2 systemd-coredump input 4096 Apr 26 12:10 global drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_commit_ts drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_dynshmem -rw------- 1 systemd-coredump input 4535 Apr 26 12:04 pg_hba.conf -rw------- 1 systemd-coredump input 1636 Apr 26 12:04 pg_ident.conf drwx------ 4 systemd-coredump input 4096 Apr 26 12:15 pg_logical drwx------ 4 systemd-coredump input 4096 Apr 26 12:04 pg_multixact drwx------ 2 systemd-coredump input 4096 Apr 26 12:10 pg_notify drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_replslot drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_serial drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_snapshots drwx------ 2 systemd-coredump input 4096 Apr 26 12:10 pg_stat drwx------ 2 systemd-coredump input 4096 Apr 26 12:17 pg_stat_tmp drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_subtrans drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_tblspc drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_twophase drwx------ 3 systemd-coredump input 4096 Apr 26 12:04 pg_wal drwx------ 2 systemd-coredump input 4096 Apr 26 12:04 pg_xact -rw------- 1 systemd-coredump input 88 Apr 26 12:04 postgresql.auto.conf -rw------- 1 systemd-coredump input 26588 Apr 26 12:04 postgresql.conf -rw------- 1 systemd-coredump input 36 Apr 26 12:10 postmaster.opts -rw------- 1 systemd-coredump input 94 Apr 26 12:10 postmaster.pid $
以下で、「docker-compose」を起動します。
$ docker-compose up
dockerのボリュームに任意のボリュームが作成されたことが確認できます。
$ docker volume ls DRIVER VOLUME NAME local django_db-data
Dockerで任意のボリュームを作成・マウントする手順は以上となります。
Dockerを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す