#【docker-compose】
自分用の簡単な備忘録です。
かなり苦戦しました。
まだまだです。継続して学んでいきます。
##Dockerを立ち上げて、コンテナを使う理由
ホストにインストールしてから、アプリケーションをインストールするのは大変であり、コンフリクトを起こす可能性もある。
コンテナを入れて、もしエラーが出ても使い捨てが可能。
Dockerfileを使えば、同じものを簡単に作ることが可能になる。
1つのコンテナに1つのアプリケーションが鉄則である。
##RailsのDockerfileの作成の流れ
$ cd ~/Documents
$ mkdir rails-product && cd rails-product
$ code Dockerfile
$ touch Gemfile Gemfile.lock
$ code Gemfile
FROM ruby:2.7
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get update -qq && apt-get install -y build-essential nodejs yarn
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app
##docker-compose
$docker runコマンドが長くなるとき
複数コンテナをまとめて起動する必要があるとき
→ docker-compose.ymlで楽をしよう。
docker-compose:コンテナを起動するときにどのように起動するか。
(dockerfile:コンテナの中身そのものを定義している。)
version: '3'
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
db-volume:
※volumesは、相対パスで記入する。
チーム開発などで他の人が使うとき絶対パスだと条件が同じにならない。
docker-compose.ymlに記入されているので、簡単に実行ができる。
##$docker-composeコマンド
docker-compose.ymlに記入されているので簡単に実行可能。
$docker-compose build
→ ビルドをする。
$docker-compose up
→ イメージが作られていなければ、ビルドをしてrunをする。
→ 既にイメージがある場合は、ビルドをせずにrunをする。
(再度ビルドしたい時は、--buildをつける。)
$docker-compose up -d
→ バックグラウンドで実行してくれる。
$docker-compose ps
→ docker-compose.ymlのコンテナの状態を確認する。
(コンテナの一覧を表示する。)
$docker-compose exec < service > < command >
→ serviceを指定して、commandを実行する。
$docker-compose down
→ コンテナをストップして、関係するイメージも全て消してくれる。(やり直しに使用)
$docker-compose logs
→ コンテナのログを表示する。
##おわりに
かめさん ありがとうございました。
米国AI開発者がゼロから教えるDocker講座