【Docker】基本をざっくりメモ


Dockerとは、、

サーバ環境をパッケージングできる仕組み。
osのバージョンから使用するライブラリ・ミドルウェアの構成等の実行環境をパッケージングすることで固定する。
そうしてDockerで作成された開発環境は配布しやすく、そのパッケージがあれば、環境を作ったり捨てたり(消したり)が簡単にできる。

アプリケーション起動・実行までの流れ

1.アプリケーションの環境を Dockerfile ファイルで定義する。このファイルは、どこでも再利用可能。

2.アプリケーションを構成する各サービスを docker-compose.yml ファイルで定義する。そうすることで、独立した環境を一斉に実行できるようにしている。

3.最後に、docker-compose up を実行すると、Composeがアプリケーション全体を起動・実行する。

Dockerfileで行うこと

(例)
FROM ruby:2.5.1-stretch

ENV ENTRYKIT_VERSION 0.4.0

WORKDIR /path

RUN apt-get update 
〜(後略)                                                                                                
  • FROMで元にするOS(ベースイメージ)の指定
  • ENVで環境変数の指定( の形式)
  • WORKDIRでRUN等の命令実行時の作業場所の明示
  • RUN apt-getで必要になるライブラリのインストール

  などなど、、

docker-compose.ymlで行うこと

(例)
version: "3"
volumes:
  mysql_8_0-data:
  redis-data:
  vendor_bundle_2_5_1:
  vendor_assets_2_7:
  node_modules:

services:
  mysql:
    image: mysql:8.0
    environment:
    networks:
      - default
    ports:
      - '33306:3306'
  redis:
    image: redis:alpine
    networks:
      - default
  app_name:
    build:
      context: .
      dockerfile: Dockerfile.dev
    depends_on:
      - mysql
      - redis
    networks:
      - default
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails server -b 0.0.0.0
  • versionでdocker-composeの使用バージョンの指定
  • servicesでアプリケーションを動かす為の各要素(railsとmysqlとredisと…)を定義。更にそれぞれの設定をその下に記述。

 
 などなど、、

docker-compose.ymlの考え方

上述したservicesに記載のある各要素もそれぞれコンテナであり、docker-compose upを行うことで、docker-compose.ymlの内容を元に別々に分かれているコンテナが一つの環境としてまとめられる。

実際のサーバ構築で例えるとすると、rails、mysql、redisがそれぞれ動くサーバを立てる、更にそれぞれがネットワークで繋げるという状況を記述しているイメージ。

参考

終わりに。

転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございます。