開発環境の問題点の整理

  • docker-compose で作ったイメージを、どう AWS で活用するのか

  • docker-compose の volume によって永続化したイメージは、

いまどうしているか

docker-compose でイメージを作っている?

イメージとはそもそもなんなのか。

Dockerfile->build->image->run->container ができる。container 内で処理をする。Container 内で作ったファイルは、Docker を落としたときに消える。(はず)

ではどうすればいいか?永続化。Volume を使う。(はず)

実際の Docker-compose のファイルでは、以下の部分で自分のPCのデータをマウントしている。マウントとは、外部のファイルを、あたかも Docker 内にあるかのように扱う手法のこと。なので、このマウントしているファイルを直接変更すればいい。

volumes:
       # host(自分のPC)の./public_html/ をドッカーの/var/www/html/
       # にマウントしている
       - ./public_html/:/var/www/html/
version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     volumes:
       # host(自分のPC)の./public_html/ をドッカーの/var/www/html/
       # にマウントしている
       - ./public_html/:/var/www/html/
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

では db のマウントは一体なんなのか。db_data という host のファイルはどこにあるのか?また、MySQL のデータだと思われるが、一体どういうデータなのか?

  db:
       image: mysql:5.7
       volumes:
         - db_data:/var/lib/mysql #host 側の db_data はどこにある?
       
volumes:
    db_data: #db_data を永続化しているのか?

今調べること。Dockerfile に書いている top レベルの volumes で与えた db_data はどこに永続化されているのか。また次の volumes: - db_data:/var/lib/mysql が指定する db_data というパス指定はなんなのか。

復習

dockerfile から build して image を作る。この image はレジストリサービス等で共有できる。image を作る際に、add 等でローカルのファイルを image に足せる。つまり、この際に開発中のフロントのデータを足せばいい。しかし、add で足したファイルを変更しても、image にはリアルタイムには反映されないので開発できない。本来はどう開発するのか。

Last updated