LoginSignup
3
0

More than 3 years have passed since last update.

docker-compose

Last updated at Posted at 2021-03-21

【docker-compose】

自分用の簡単な備忘録です。
かなり苦戦しました。
まだまだです。継続して学んでいきます。

Dockerを立ち上げて、コンテナを使う理由

ホストにインストールしてから、アプリケーションをインストールするのは大変であり、コンフリクトを起こす可能性もある。
コンテナを入れて、もしエラーが出ても使い捨てが可能。
Dockerfileを使えば、同じものを簡単に作ることが可能になる。

1つのコンテナに1つのアプリケーションが鉄則である。

RailsのDockerfileの作成の流れ

$ cd ~/Documents
$ mkdir rails-product && cd rails-product
$ code Dockerfile
$ touch Gemfile Gemfile.lock
$ code Gemfile

Dockerfile
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:コンテナの中身そのものを定義している。)

docker-compose.yml
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講座

感謝の気持ちを大事にしてこれからも頑張っていこう〜!
image.png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0