LoginSignup
0
0

More than 3 years have passed since last update.

今更Docker(-compose)の便利さを知る(使うにあたって参考にした情報リスト)

Posted at

きっかけ

もともと仕事でdocker-composeを使っていたけど、誰かの作った設定を「こういうコマンドで使ってね」という感じだった。

ふと思い立ち、Wordpressを新たに作ろう/grafanaも立てたい/node-redとかも必要かもとなった。

初めはせっかくHyper-V使えるんだから、Hyper-V上の1イメージに作ればいいかとか思ったけど、ネットワーク的におかしい。
(githubのhttpsアクセスが拒否られる……)
もう解決策も分らんくなったのであきらめた。

docker-composeは、使いたいアプリ/システムをダウンロードして使えるんやでってことはなんとなく知ってたので、「じゃぁdocker-composeでやってみるか」となった。

相変わらず深くまでちゃんと分かっているわけではないが、参考にした情報をメモしておく。

WindowsにDockerのインストール

  • ググってDocker-for-Windowsにたどり着いてインストーラーでインストール
  • 前はHyper-V上に構成してたので、Win10 ProとHomeではインストール手順が違っていたはずだが、今はWSLを使う(パフォーマンスもこっちの方が良いらしい)っぽいのでHomeでも同じかもしれない
    • Hyper-V・・・もう要らんか・・・?
  • WSLが入っていないとインストール後にDocker-Desktopの設定の時に「WSLをインストールするまで動かへんで」と言ってくるので、ダイアログに従ってWSLをインストールする

docker-compose.ymlを作成する

とりあえず、docker-compose.ymlを書けば、ダウンロードしてきてビルドされることは知っていたので書こうとする。
が、何を書いていいのかわからない。

参考しにした情報

docker起動

Power Shell を管理者権限で起動して

> docker-compose up -d

これは仕事で使っているので知っている。

docker落とす

Power Shell を管理者権限で起動して

> docker-compose down

ボリューム(設定とかが記憶されているところ。DBにボリュームの指定が無いと、dockerを落とすたびにデータが消される)ごと落とす場合は

> docker-compose down -v

そして、Wordpressの言語設定が保存されないことに気づく。

volumesの設定について

先述のWordpressの指定は以下の通り。

docker-compose.yml
version: '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
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

「あーdbのvolumesのdb_dataが、volumesのdb_dataに紐づいて保存されるんだな」と理解。

docker-compose.yml
version: '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
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    volumes:
      - wordpress_html:/var/www/html

volumes:
  db_data:
  wordpress_html:

上記の指定は、ボリュームのパスがwindowsのパスからは分かりづらい指定。
参考にしたサイトでは

  wordpress:
    volumes:
      - ./wordpress/html:/var/www/html

とだけ指定して、wordpressと同レベルのvolumesは使っていない。
これは、指定したパスにボリュームの共有ディレクトリを作るか、Dockerが自動的にどっかにボリュームを作ってくれるのを信用するか違いだと思い込んでる。
(上記をしていたら何回かやっているうちに、DBにアクセスできなくなったのでやめた。。多分ディレクトリ内のファイルが壊れたりなんかしたのだろう・・・)

参考しにした情報

その後、grafanaやらを組み込んだ時に参考にしたもの

所感

Hyper-VではWordpressの1環境作るのにhttpsが通らないと何日も詰まっていたのに、docker-composeでは4コンテナを2時間で作れた。
これはdocker-composeに惚れてまう。

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