Flask+MySQL on dockerを始める準備

# Flask+MySQL on dockerを始める準備

[Flask+MySQL on docker](https://qiita.com/kaorunix/items/c04d250bda904e9f07f2)の準備をするための記事です。
以下の用意ができましたら
[Flask+MySQL on docker](https://qiita.com/kaorunix/items/c04d250bda904e9f07f2)
を実施してみてください。

## 事前準備

* エディタ
* pythonインストール
* pipインストール
* pipenvインストール
* mysqlインストール
* gitインストール
* dockerインストール

#### エディタ

コーディングもするので使い慣れたエディタも用意してください。
私はemacsを使いたいのですがvscodeを使う人が社内では多そうです。
vscodeを使う場合、Pythonインストール、VS Codeインストールをしておきましょう。[Windows + Python 3.6 + PipEnv + Visual Studio Code でPython開発環境](https://qiita.com/youkidkk/items/b6a6e39ee3a109001c75)などに記事がありました。


----

#### python

新しめのversionのpythonをインストールしておきます。3.7以降が良いでしょう。
後からインストールするpipenvによりプロジェクト毎にpythonのversionを指定できるのでversionが異なっていても大丈夫です。

##### Windows

[Python公式サイト](https://www.python.org/)又は[Windows 環境のPython](https://www.python.jp/install/windows/index.html)よりダウンロードしてインストールしてください。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/4182e041-3da2-e621-8026-44723a365e5f.png)

画面をスクロールし、Filesよりインストーラをダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/30fe3fc0-daec-d2e4-63d1-dddc876a48d9.png)

ダウンロードしたファイルを実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/12a9578c-b07d-ebd8-4aac-2964a3300499.png)

Add Python 3.10 to PATHにチェックしてインストール時にpythonの実行ファイルをPATHに登録しましょう。
その後Install Nowをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/1059eec6-e9e2-65a8-a823-26132b4f1cae.png)

インストールが済むと次の様に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/0691e55a-3829-e812-fab1-5a472b9b70a7.png)

もし、設定やインストール漏れがあった場合、インストーラーを起動し、Modifyをクリックすることで追加インストールなどできます。

##### Mac

[macOS環境のPython](https://www.python.jp/install/macos/index.html)などを参考に homebrew でインストールしてください。
次のコマンドでインストールできます。

```shell
$ brew install python3
```

#### pip

[pip](https://www.python.jp/install/windows/pip.html)
などにインストール方法とpipの説明があります。
pipの代わりにpy.exeもあると書かれていますが、pyはwindowsだけのコマンドみたいです。

#### pipenv

pipenvを使って、pythonのバージョンや、pipでインストールするパッケージを開発メンバーと共有します。
[Pipenvを使ったPython開発まとめ](https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a)



#### MySQL

[MySQL 日本語版公式サイト - ダウンロード](https://www.mysql.com/jp/downloads/)より MySQL Community (GPL) Downloadsの5.7.xをダウンロードしましょう。
パッケージはサーバーですが勉強会で使うのはパッケージに含まれるクライアント(Command Line Client)です。

インストール方法やCommand Line Clientについては[MySQLのダウンロード＆インストールと初期設定方法](https://proengineer.internous.co.jp/content/columnfeature/6529)や
[MySQLのデータベースに接続する３つの方法と接続手順](https://proengineer.internous.co.jp/content/columnfeature/6584)

[Flask+MySQL on docker](https://qiita.com/kaorunix/items/c04d250bda904e9f07f2)ではdockerの中にMySQLのDBを作りますが、PCのスペック等でdocker動かすのが難しい方は、MySQLのサーバーを開発PCで動かしdockerを使わなくても構いません。

次を参考にdockerを使う方は、MySQLサーバーのサービス自動起動を停止しておいてください。

* Windows [Windows10 サービスの自動起動を停止(無効)する方法](https://www.pasoble.jp/windows/10/088133.html)
* Mac [【Mac】MySQLの停止・起動・状態確認の基本コマンド](https://freeheroblog.com/mac-mysql/)

-------


#### git

[Flask+MySQL on docker](https://qiita.com/kaorunix/items/c04d250bda904e9f07f2)ではgit及びgithubを使います。gitが入っていることを確認してください。

##### Windows

Windowsの人は [Git for Windows](https://gitforwindows.org/)をインストールしましょう。
サイトにアクセスし、インストーラのDownloadし、実行してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/47bcd183-bc70-f4a4-3618-8b4ab4266873.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/b74f04c9-39bc-9051-4809-d2e5254c93bc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/2e9cc7da-5b2a-45b7-df81-12b718766721.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/0208c6c8-dc4d-a362-d273-01e419034647.png)

次の画像の項目にチェックして次へボタンを押下する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/8c488edd-5e9f-4ae8-c618-c3edaa5022a5.png)

その後も基本デフォルトの選択肢のまま進めば良い。

デフォルトブランチをmasterにする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/c927800e-ddda-af1d-8717-d39bee4ba73e.png)

git bashにUnixのコマンドを混ぜる。gitには関係ないが便利になるためお勧めします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/3b29dbd9-6336-c6fa-4aa7-f3e94b98024a.png)

sshのインストール。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/dc350220-51aa-4634-8e9d-47d5c8fe30e5.png)

改行コードの設定。WindowsとUnixでの改行コードの違いを認識できていなければデフォルト設定が良いでしょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/6a6ebc2f-6062-0a24-f771-1c2794af9e71.png)

ターミナルアプリをインストールしますがpythonと相性が悪い様なので今回はUse windows default console windowを選びましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/e7be84fa-1c8b-80bb-7bd8-ba90462c26e3.png)


マージの際、全てのログがそのまま残るfast-forwardを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/a8762866-4a26-990c-7f57-7a09ce84c79f.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/a7baf794-aea8-869e-ddfe-c5a65933d26d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/d81eb4ae-50c9-55df-a309-99bdd604bc7a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/c7e2a368-b98b-ed07-ffeb-f37aa0c80017.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284697/0ab1c14d-7bae-5407-0d0a-02500f72dd2b.png)



##### Mac

Macはhomebrewでインストールします。

```
$ brew install git
```

#### gitのリポジトリ、ソースコード管理サービス登録用sshキーの作成

ソースコード管理サービスにコマンドラインからアクセスする場合、都度ユーザー名、パスワードを入れて認証するのは煩わしいため、予めユーザーの公開鍵を登録しておきsshを使って暗号鍵で認証することで認証フェーズをコマンドで入力しなくてもサービスを使うことができます。

##### Windows

sshを使ったことがなければ自分のホームディレクトリに`.ssh`ディレクトリがないので作りましょう。

```
$ pwd
/c/User/myuser
$ mkdir .ssh
$ cd .ssh
```

次のコマンドを入力して秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作ります。
Enter passphraseには何も入れずエンターキーを押してください。
パスフレーズを設定するとソースコード管理サービスとやり取りするgitコマンドを実行した時にパスフレーズを求められることがあります。

```shell
$ ssh-keygen.exe -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/myuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/myuser/.ssh/id_rsa
Your public key has been saved in /c/Users/myuser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:nw4NxDQ4NO4OjXLfTqlQlJIab917i0bJnH4hLroMjKg myuser@pc
The key's randomart image is:
+---[RSA 3072]----+
|     .o.o        |
|     oo= .       |
|  . o +.o        |
|   + B o         |
|  o * =oSo       |
|.o + = .B*..     |
|o o . o+*.=.     |
|.  o ..++=..     |
|E   +o.oo.o      |
+----[SHA256]-----+

$
```

##### Mac

macの場合もWindosと同様です。

```shell
$ ssh-keygen -t rsa                                                  
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/myuser/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in test_rsa
Your public key has been saved in /Users/myuser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:jDNPg0BAdQUX539YR7HiRAJpDrknSwffXKlhu7fmIn8 myuser@pc.local
The key's randomart image is:
+---[RSA 3072]----+
| .ooo oo=o+. ...o|
|   . . = = ooo ..|
|    .   B = =o...|
|     . B = *oo.. |
|      * S   +..  |
|       * . . o   |
|        .   . .  |
|         . . E   |
|          o.=.   |
+----[SHA256]-----+
```


次にgithubにアカウントを作ってsshのキーを登録しておいてください。
2022年の社内研修ではAWS Code Commitを使います。
これをやっておくとコマンドラインで認証操作をせずにgit操作ができる様になります。
[GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)
[[Windows 10] Git BashでGitHubにSSH接続](https://qiita.com/coffee_g9/items/e1b9ab28cfa54f854308)

gitで知っておきたいことはコード変更の登録とマージ方法です。
もし、本など持っていれば勉強会の時に用意しておきましょう。

#### docker

[Windows に Docker Desktop をインストール](https://docs.docker.jp/docker-for-windows/install.html)を参考にdockerをインストールしてください。
HomeとProで異なるのでご注意ください。
2022年の社内研修では無理にdockerを使わなくても大丈夫です。