めるターン(1)~環境構築~
めるターン開幕した.今は取り急ぎteamLabのインターンの事前課題があるのでそちらを教えてもらっているが本来の目的はget the moneyする私がWebアプリケーションエンジニアになる夢を叶えるために技術を身につけること.
めるターン1回目は8/6に行われたのでそのまとめ.
teamLabの事前課題
RESTfulなAPIを作成する.
簡易ECショップを作ってIaasかPaasで公開する.
商品画像,商品タイトル,説明文,価格の登録・検索・変更・削除(CRUD)ができるもの.
やったこと
- 環境隔離系ツールについて学んだ.(Docker,*env,bundler)
- Dockerを入れた.
- DockerによりteamLab事前課題用のコンテナを作成した.
- Dockerfile-dbにdbの指定をした.
- schema.sqlを書いた.
- docker-compose.ymlにDockerの仕様を書いた.
- .ruby-versionにrubyのバージョンを指定した.
環境隔離系ツール
1つのマシンにアプリケーションを複数入れるようになったので環境を隔離する必要が出てきた.よって以下のツールが生み出された.
Docker
アプリケーションを隔離するツール.
セキュリティ的にも良いし,環境を移しやすい
*env
処理系を隔離する.rubyだとrbenvで,rubyのバージョンを.ruby-versionに従って設定する.
rbenvから派生して,plenv,pyenv,goenv,mysqlenvなどあり,それを一括でインストールするanyenvがある.
bundler
ライブラリを隔離する.便利なプログラムを格納保管
※今gemとbundlerの違いがよくわかっていないのでgemなどについて調べること.※
Dockerを入れた
docker-compose ps
今の状態見れる
docker-compose down
全てのコンテナ落とす
docker-compose build
イメージに頼らず立て直す
docker-compose stop
そのコンテナのみ止める
※
docker-compose --help
でコマンド確認できる.
Docker toolboxも入れた
ここで躓いた.toolboxの中のナントカのみ欲しかったのでそれだけ入れた.何を入れたか忘れたので明日聞く.
DockerによりteamLab事前課題用のコンテナを作成した
rubyteamlab_db_1というコンテナができた.MySQL用コンテナ.
ディレクトリとしては
ruby-teamLab
├
DB
└
schema.sql
├docker
└
dockerfile-db
├
docker-compose.yml
├
.ruby-version
├
.node-versiondocker
└
.bundle
└
config
schema.sql
product_adminというデータベースにproductテーブルとproduct_pictureテーブルを定義した.
MySQLがわからないのでこれ買った
gist5c6799ee981d666188bdd976a8013fda
productのid,title,discription,price,product_pictureのid,product_idを
それぞれ合うデータ型で記述した.
utf8mb4
日本だからutf8,mbはマルチバイトのこと.4バイト.
SHA-256
256ビットつまり32バイトに圧縮してデータをゲットできる.
InnoDB
データベースエンジン(データをうまく格納するプログラム).
Dockerfile-db
Dockerfileは設計図.設定によって横のコンテナとつながる.
ここではDBの指定をした.Dockerfileの文法を元に書いた.
gist864cd2b4ed48f3c6f3bf21148951bad5
FROM でmySQLのバージョンを5.7
COPYで ./DB/schema.sqlをdocker-entrypoint-initdb.d/にcopyした.docker-entrypoint-initdb.d/の中にあるSQLが実行されるため.
docker-compose.yml
Dockerの仕様を書いた.
docker-compose up
するとdocker-compose.ymlの仕様に沿ってDokerが立ち上がる
- dockerの最新バージョンは3
- serviceの中にdbしかないからrubyteamlab_db_1というコンテナしかない.
- Mysqlのポートは3306番.
-は箇条書きのこと.3306番から3306番へ繋ぐ
- MySQLのrootユーザをパスワードなしで作った.
.ruby-version
rubyのversionを2.4.1とした.rbenvはこのファイルにより2.4.1のrubyを当てる.
気づき
- MySQL知らないけどpostgreSQLとさほど変わらない.postgreSQLも曖昧だったので学ぼう.
- 今気づいたけどコメント書いていないのでいちいち書こうと思う.
予習
urlを決めて,どのurlで何が返ってくるか考える.
どうすればいいのかわからなかったのでこれ買った.
読んで考えたものを以下に書きます
http://api.teamlab-intern.com/v1/product
→商品タイトル一覧
http://api.teamlab-intern.com/v1/product/:id
→画像,商品タイトル,説明文,価格
http://api.teamlab-intern.com/v1/product/:id/title
→商品タイトルの文字列
http://api.teamlab-intern.com/v1/product/description
→説明文の文字列
http://api.teamlab-intern.com/v1/product/:id/price
→価格の数値
http://api.teamlab-intern.com/v1/product/:id/product_picture
→商品の画像
タスク
- gemについて調べる.
- ナントカが何かきく.
- めるターン(2)をかく.