LoginSignup
3

More than 1 year has passed since last update.

初めまして。「あなたの学びをシェア!2020年までにUdemyで学んだこと03【PR】Udemy Advent Calendar 2020」の9日目を担当させていただきます。

今回は、私がDocker入門として購入した、「米国AI開発者がゼロから教えるDocker講座」について記事を書きたいと思います。

自分の経験

RailsでWebサービスの開発インターンを1年弱経験。Dockerは使用経験なし。
Linuxやgitは使用経験ありといった経験値です。

この講座について

レベル

初級〜上級

「Dockerとは」といった初球の内容から、CICDパイプラインの構築といった実用的な範囲まで網羅的に学ぶことができます。

学べること

  • Dockerfileを書き、実際にコンテナを立ち上げることができるようになる
  • Docker-composeを使って、複数のコンテナで構成されるWebアプリケーションの開発環境を整えることができる
  • Dockerを使ったCICDパイプラインの構築
  • Linuxの基礎コマンドなど,プログラミング学習に必要な知識の習得

ボリューム

土日で一通り学ぶことが可能です

実際に作成したDockerfileとdocker-composeファイル

講座ではデータベースはpostgresを使っていたのですが、mysqlで構築してみました。また、講座ではruby2.5のDocker Imageを使用しているのですが、ruby2.6でrails6の環境構築を行いました。

rails6ではwebpackerがデフォルトのJavascriptコンパイラになっている影響で、node.jsのインストール関連で躓いたのが印象に残っています。

Dockerfile

FROM ruby:2.6
RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
    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
RUN apt-get update && apt-get install -y \
    build-essential\
    libpq-dev\
    nodejs\
    yarn
WORKDIR /work_dir
COPY Gemfile /work_dir/Gemfile
COPY Gemfile.lock /work_dir/Gemfile.lock
RUN bundle install
COPY . /work_dir

COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

docker-compose.yml
version: "3"

services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: <%= ENV.fetch("DATABASE_PASSWORD") %>
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - mysql-data:/var/lib/mysql
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/work_dir
    environment:
      - "DATABASE_PASSWORD=password"
    ports:
      - "3000:3000"
    depends_on:
      - db
    stdin_open: true
    tty: true
volumes:
  mysql-data:
    driver: local

受講してよかった点・感想

Dockerという今や当たり前の技術を学べて、満足度は星5つです。

ボリューミーな内容なので、2周することをお勧めします。
「なぜDockerが必要なのか」、といったWhyの部分と、「docker-composeとは」、といったWhatの部分が両方あったのですんなりと理解がしやすい講義内容だと思います。

また、ShellやKarnelといったOS周りの知識もこの講座を通じて少し身につけることができました。

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
What you can do with signing up
3