0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Docker】環境構築

Last updated at Posted at 2020-12-06

#環境

  • Ruby: 2.6.0
  • Rails: 6.0.3
  • MySQL
  • MacOS

#Dockerの要約
##Dockerとは?

  • Docker Engineを常駐させることで、ゲストOSを使用せず、ホストOSを基盤にミドルウェア以降を仮想環境(コンテナ)として起動する仕組み。
  • ミドルウェア等の層をimageと呼び、Docker Hubで公開されている構成を流用したり、Dockerfileを用いて自身で新規作成する事もできる。
  • docker-compose.ymlに複数のコンテナ構成を記述することでこれらを一括起動できる。
  • 流動データはコンテナ削除とともに消えるため、残したい場合にはホストのデータをコンテナにマウントする必要がある(docker-compose.ymlに記述)。

#手順
##1. Dockerfile・docker-compose.yml作成

FROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN gem install bundler:2.0.2 && bundle install
COPY . /myapp

[FROM] 使用するイメージとバージョン
[RUN] コマンドの実行
[WORKDIR] 作業ディレクトリ
[ADD] ファイルをコンテナへコピー
[EXPOSE] port番号
[CMD] イメージ内部のソフトウェア実行(ここではRailsを指す)

docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.6
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    volumes:
      - mysql-data:/var/lib/mysql
    ports:
      - "3306:3306"

  web:
    tty: true
    stdin_open: true
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    links:
      - db

volumes:
  mysql-data:

dbボリュームを設定しコンテナを終了してもデータをボリューム内に残すための記述。
appボリュームを設定しローカルにあるディレクトリをコンテナにマウントするための記述。
コマンドの/bin/sh -c "rm -f tmp/pids/server.pidに関しては、Pidファイル削除のために記述。起動時に残っているとエラーを吐くため削除が必要。自分で削除しても良いが、これを書けば起動時に自動で削除するようになる。

##2. database.yml

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: db

##3. エラーへの対処
trueをfalseに変更すると正常に動作する。
厳密な整合性のチェックをオフにする事でエラーを回避しているようです。
記述時点では、アプリケーション動作に問題は発生していません。

========================================
 Your Yarn packages are out of date!
 Please run `yarn install --check-files` to update.
========================================
webpacker.yml
# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
check_yarn_integrity: false

以上

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?