開発環境の問題点の整理
- 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 modified 5yr ago