開発環境ができた!

 

今回作成したファイルなどはこちらからどうぞ

https://github.com/dsrice/base_docker/tree/step1

はじめに

いろいろありましたが、

まず、Windows10 Proにアップグレードしました。

PCがあげる悲鳴がここ1年きになっているところではありますが、

Macに買い替えるにはいろいろとお金が・・・・

ということでアップグレードしました!!

 

サクッとHyper-Vを有効にして、

Docker Desctop on Windowsをインストールして

docker-compose upしたら何事もなくコンテナとの共有など成功!

なんでやねん!Vagrantに何が起こってるんだ・・・orz

 ちなみになぞのフォルダは管理者権限のコマンドプロンプトからでも消せません・・・・

 

mysqlとかのDBサーバを立てるときとかにつかうか

ホストOSに直接いれてもいいけど、

たまにDBの切り替えとかしたいときとかこれからたくさんあるだろうし

このままでOKですな!

 

手順

 *この方法をやるにはWindows10 Proが必要です。

 Windows10 Homeではできませんのご了承ください。

手順1 Hyper-Vを有効にする

手順2 Docker Desctop on Windowsをインストールする

手順3 Docker環境のための整備 

 

手順1 Hyper-Vを有効にする

Hyper-Vとは、Windows環境で仮想マシンを作成することができるものです。

Hyper-VWindows Proである必要があります。

Hyper-Vのみをインストールする方法はありませんので注意してください。

 

Windowsアイコンを右クリックして表示されるメニューの「アプリと機能」をクリックする

f:id:ds_ricekun:20200428231958p:plain

 

②表示されたウインドウの右側の「プログラムと機能」をクリックする

f:id:ds_ricekun:20200428232100p:plain

 

③左側にある「Windowsの機能の有効化または無効化」をクリックする

f:id:ds_ricekun:20200428232303p:plain



④表示されたポップアップからHyper-Vを探してチェックボックスにチェックをつける

f:id:ds_ricekun:20200428232436p:plain

 

⑤チェックとつけたら「OK」ボタンをクリックする。

 PCの再起動を促されます。有効にするのに必要ですので必ず実行してください。

 

手順2 Docker Desktop on Windowsをインストールする

①以下のURLにアクセスします。

 https://hub.docker.com/editions/community/docker-ce-desktop-windows/

 

②「Get Docker」をクリックします。

 クリックするとexeファイルのダウンロードが始まります。

 

f:id:ds_ricekun:20200428233424p:plain

③ダウンロードしたexeファイルを実行してください。

 表示された内容に従ってインストールをします。

 インストールを終えるとPCの再起動になります。

 再起動すると、Docker Desktop on Windowsが起動時に立ち上がるようになります。

 

 アイコンは上の図の左側にあるようなクジラのようなものになります。

 タスクバーの右側から展開すると起動状態を確認できます。

 

手順3 Docker環境のための整備

 djangoやangularまで話をするとまだまだ長くなってしまうので

ここではmysqlphpmyadminのみの環境でDockerが使えるようになったかを

確認するところまでにします。

近いうちにDjangoやAngularの話を書こうかと思います。

 

①作業ディレクトリを用意しましょう。

 場所はどこでもOKです。

 ただ、Docker関連はコマンドプロンプトからコマンドを実行する必要があります。

 パスを覚えさすなり、移動させやすいパスにするなど工夫が必要です。

 

②作業ディレクトリ内の構成を用意します。

 作業ディレクト

  ┣ーーcontents

  ┃  ┗ーーmysql

  ┃    ┣ーーDockerfile

  ┃    ┗ーーconf.d

       ┃              ┗ーーmy.conf

  ┗ーーdocker-compose.yml

 

フォルダ、ファイルの説明

 contensフォルダ

  Dockerの構成などの情報をまとめるためのフォルダです。

  今後の展開も踏まえてさらにmysql用にフォルダを切っています。

 

 Dockerfile

       拡張子がないですが今回作成するコンテナは最初に構成する情報をまとめたものです。mysqlのVersion upするときなどはこのファイルの変更が必要です。

 

 

FROM mysql:8.0
# 指定の場所にログを記録するディレクトリを作る
RUN mkdir /var/log/mysql
RUN chown mysql:mysql /var/log/mysql 
RUN chown mysql:mysql /var/lib/mysql
RUN chown mysql:mysql /usr/sbin/mysqld 
RUN touch /var/log/mysql/mysqld.log

EXPOSE 3306

 chownを書いていますが、なくても動くかもしれないです。

 ただ、権限不足などのエラーが出る際はあったほうがいいと思います。

 

 my.conf

       mysqlの設定をコンテナの外に出したものです。

  このようにしている理由は話が長くなるので今回は保留にします。

  今はこういうものだと思ってもらえれば幸いです。

  内容は、mysqlで設定に記載するmy.confと同じです。

  特別docker用のものはありません。

 

[mysql]
# 文字コードの設定
default-character-set = utf8mb4
[mysqld]
# 文字コード/照合順序の設定
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# デフォルト認証プラグインの設定
default-authentication-plugin = mysql_native_password
explicit-defaults-for-timestamp = 1  # テーブルにTimeStamp型のカラムをもつ場合、推奨
# 実行ログの設定
general-log = 1  # 実行したクエリの全ての履歴が記録される(defaultではOFFになっているらしい)
general-log-file=/var/log/mysql/mysqld.log # ログの出力先
# エラーログの設定
log-error = /var/log/mysql/mysql-error.log
# スロークエリログの設定
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 5.0
log_queries_not_using_indexes = 0

[client]
# 文字コードの設定
default-character-set = utf8mb4

 

 docker-compose.yml

      docker-composeコマンドで対応する内容になります。

   内容の説明は後日にします。(これだけでも1記事かけるので)

 

version'3'

services:
  db:
    build./contents/mysql
    container_namemysql
    restartalways
    environment:
      MYSQL_ROOT_PASSWORDroot
      MYSQL_DATABASEbowring
      MYSQL_USERbowring
      MYSQL_PASSWORDbowring
      TZ'Asia/Tokyo'
    command--innodb-use-native-aio=0
    volumes:
      - ./cache/db/ :/var/lib/mysql
      - ./contents/mysql/conf.d :/etc/mysql/conf.d/
      - ./log/mysql :/var/log/mysql
    ports:
      - 33306:3306
    
  phpMyAdmin
    container_namephpmyadmin
    imagephpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOSTS=mysql
      - PMA_USER=root
      - PMA_PASSWORD=root
    ports:
      - 8080:80

 

   注意点としては、portsのところです。

  ymlファイルですのでdbがmysqlのコンテナ情報、

 phpmyadminphpmyadminのコンテナ情報になります。

 portsの情報は ホストOS : ゲストOS のポート転送になります。

 私の環境はホストOS内にmysqlをインストールしているため

 ポートの3306はホストOSのmysqlがすでに使用しています。

 同じポートを指定しようとするとdockerのmysqlが立ち上がらなくなります。

 それを避けるためにポート転送を宣言しました。

 不要な方は3306にしてもらって構いません。

 大事なことはホストOS上で対象ポートを使用していないことです。

 

コマンドプロンプトからDockerを起動します。

  コマンドプロンプトに起動して、

  まず、用意した作業ディレクトリに移動します。

 

  次に

  「docker-compose build

  を実行します。

  このコマンドは初回時やDockerfileの内容を変更したときに使用します。

  このコマンドでコンテナイメージを作成しますのでDocker Hubに上げたい方は

  利用が増えると思います。

 

  「docker-compose up」を実行するとコンテナが起動します。

  初回起動時はmysqlの初期化などが走りますのですこし時間がかかります。

  コマンドプロンプトの動きが止まったらホストOSのブラウザから

   「http://localhost:8080

  にアクセスします。phpmyadminの画面が表示されたら成功です。

  

f:id:ds_ricekun:20200429005427p:plain

ちなみにphpmyadminでなくてもアクセス可能です。

ツールを使う際はポート指定に注意してください。

 

長くなりましたが、今日は以上です。

予定では、djangoやangular用のコンテナを追加して、

Dockerで用意したファイルのあれこれを話そうかと思います。

  

今回作成したファイルなどはこちらからどうぞ

https://github.com/dsrice/base_docker/tree/step1