キュアセブン技術ブログ

考えたこと,学んだことを書きます

めるターン(1)~環境構築~

めるターン開幕した.今は取り急ぎteamLabのインターンの事前課題があるのでそちらを教えてもらっているが本来の目的はget the moneyする私がWebアプリケーションエンジニアになる夢を叶えるために技術を身につけること.

めるターン1回目は8/6に行われたのでそのまとめ.

teamLabの事前課題

RESTfulなAPIを作成する.

簡易ECショップを作ってIaasかPaasで公開する.

商品画像,商品タイトル,説明文,価格の登録・検索・変更・削除(CRUD)ができるもの.

 

github.com

やったこと

  • 環境隔離系ツールについて学んだ.(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を入れた

docs.docker.com

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がわからないのでこれ買った

ポケット詳解 SQL辞典 [第3版] (Pocket詳解)

ポケット詳解 SQL辞典 [第3版] (Pocket詳解)

 

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で何が返ってくるか考える.

どうすればいいのかわからなかったのでこれ買った.

Web API: The Good Parts

Web API: The Good Parts

 

 読んで考えたものを以下に書きます

 

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)をかく.