はじめに
※ この記事は知り合いとの共同開発に役立てるために書かれたものです
私たちのwebアプリ開発環境は Dockerコンテナ 上で成り立っています。
webという名前のrailsを動かしているコンテナと、dbというMySQLを動かしているコンテナをdocker-compose up
で同時に立ち上げています。
dockerコンテナを使うメリット
- 環境の構築が容易で高速
- 手軽に環境の共有、統一ができる
- ローカル上の周辺環境との依存を避けられる
- リリース時にサーバー上にも同じ環境をすぐに構築できる
- 従来の仮想化技術よりメモリ消費量が少ない
以上の理由よりDockerを使っています。
環境
Ruby2.5.3
Rails5.2.2
MySQL5.7
環境構築方法
- dockerhubにアカウントを作成して、dockerfordesktopをダウンロード
- ローカルのPCに
git clone
する。 - ディレクトリ移動して、
docker-compose up
docker-compose exec web rails db:create
docker-compose exec web rails db:migrate
- 2回目からは
docker-compose up
のみ
トラブル時(git編)
gitが全くわからない
- 参考ページ:サル先生のgit入門
githubにpushしたい
$ git checkout -b 作成するブランチ名
もしくは
$ git branch 作成するブランチ名
$ git branch 作成したブランチ名
でも可
でブランチを作る。やっていることがわかるブランチ名が良し
$ git init
$ git add (ファイル名) もしくは git add .
$ git commit -m "comment"
$ git push origin ブランチ名
pushしたらgithubに黄色いバーが出る。
masterに反映させたい内容なら、Compare & pull request押してね
リモートブランチがわからない
リモートブランチ一覧表示
$ git branch -r
他の人pushしたブランチを自分のローカルにpullしたい
$ git fetch
でローカルのブランチを最新に更新
$ git pull origin REMOT_BRANCH_NAME:LOCAL_BRANCH_NAME
トラブル時(docker編)
docker-compose up
しても3000番portが立ち上がらない場合。
- 前回dockerを終了した時にサーバーが適切に終了できていなかった
- 参考記事:https://qiita.com/JUNO-LEARN/items/d7b49f130b62f0740a1c
-
tmp/pids/server.pid
を消してみて
コンテナ内に入りたい
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b9abd4473fd9 watch_project_web "rails s -p 3000 -b …" 28 hours ago Up 28 hours 0.0.0.0:3000->3000/tcp watch_project_web_1
d55c5240d70d mysql:5.7 "docker-entrypoint.s…" 28 hours ago Up 28 hours 0.0.0.0:3306->3306/tcp, 33060/tcp watch_project_db_1
で起動中のコンテナIDを確認
$ docker exec -it {コンテナ名} bash
コンテナに入らずデータベースがみたい
docker-compose exec db mysql -uroot -p
コンテナに入らず、railsコマンドを使いたい
docker-compose exec web rails 〜〜
webというコンテナに入って直接rails 〜〜
みたいにコマンドを使ってもいい。