ちょっとは理解できたかな
今個人開発しているアプリをvagrantからdockerに移す為に試行錯誤しておりました。
最終的にdocker-composeに書いているのは下記になります。
services:
web1:
container_name: “laravel”
image: laravel:latest
volumes:
– C:\project\docker\data:/home/data
privileged: true
command: /sbin/init
tty: true
ports:
– 8080:80
postgres:
image: bitnami/postgresql:9.6
restart: always
environment:
POSTGRES_HOST_AUTH_METHOD: ‘trust’
POSTGRES_USER: postgres
POSTGRES_PASSWORD: pikatyuu4188
PGPASSWORD: pikatyuu4188
POSTGRES_DB: mydb
TZ: “Asia/Tokyo”
ports:
– 5432:5432
volumes:
– C:\project\docker\postgres:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4
restart: always
ports:
– 81:80
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: password
volumes:
– C:\project\docker\pgadmin:/var/lib/pgadmin
depends_on:
– postgres
volumes:
web1:
postgres:
pgadmin:
突っ込み所はあると思います。
まずposgreが10未満な所。
これには理由があって、元々最新verで動かしていたのですが、web1の方も読み取る側として10以上にする必要があったのですが、リポジトリがすんなり追加出来たら良かったのですが、エラーが出る・・・。
色々設定してもエラーが出る・・・。
という訳で結局元のposgreを10未満にする事で対処しました。(posgreは10以上から少し認証方式が変わった)
10未満にすることでマイグレーションもすんなり通りました。
後はdockerの知識として覚えた所はコンテナはプロセスを切ったら状態がリセットされる。
私が何回か起動させたり、停止させたりしてたまに状態が残っていたのはたまたまか想定外の挙動だと思われます。
基本的に状態を保持するにはイメージをセーブしてそれをロードする事が基本みたいです。
ここはvagrantの方がちょっと便利かなと思いました。
vagrantはDBもサーバーもまるっと保存しているので、容量は大きくなるけど、その反面イメージを呼び出すだけで環境が再現されるので便利です。
dockerもcomposeファイルを作ってしまえば同じですが、ツールはあるかもしれませんが、基本セーブする手間があるのでそこは使い方の違いですね。
今回はDBだけ外出しにしましたが、nginxや言語、FWまで外出し出来る様なのでどこまで細分化するかですね。
環境が決まっていれば大きいイメージを作ってもいいと思いましたが、今回みたいにDBのverの切り替えなど手軽に行えるので正直どっちでもいいですw
難しいと思っていたイメージ同士の繋ぎもcomposeファイルに定義してしまえば簡単に出来ますしdockerのイメージが少し変わりました。
ただDBのデータを永続化するためにデータをホスト側に持たせる為に共有フォルダにする辺り、上手くいっているかまだ不明です。
ただこれも、ちゃんと方法が分かればふ~ん程度です。
色んなOS、FWや言語を試したい方には凄くいいツールだと思いました。
まだ軽さとかはあんまり実感出来てないです。
検索するとvagrantより軽いみたいですが、そもそもvagrantも重いと感じた事が無いので・・・。
まだm1 Mac版は正式リリースされてない?みたいなのでそれがリリースされれば入れてみたいです。
とりあえず、dockerを食わず嫌いしていたので、その部分は解消出来たので良かったです。
コメント