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を使って開発環境を構築する。

Posted at

はじめに

既存のRailsで作成したアプリにDockerを導入したいと思い作成しました。
事前にDocker,Docker composeは導入済みになります。

開発環境

RubyonRails 2.6.5
MYSQL 5.6

導入手順

①Dockerfileをappと同列で新規作成
②docker-compose.ymlをappと同列で新規作成
③database.ymlを編集

Dockerfileについて

#参照する言語を指定
FROM ruby:2.6.5
#Dockerコンテナ内で実行するコマンドを定義
RUN apt-get update && apt-get install -y \
    build-essential \
    nodejs
WORKDIR /アプリ名
#Gemfileをコピー
COPY Gemfile /アプリ名/Gemfile
COPY Gemfile.lock /pictweet/Gemfile.lock
#Gemを導入
RUN gem install bundler
RUN bundle install

docker-compose.ymlについて

docker-compose.yml
version: '3'

volumes:
  mysql-data:

services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    ports:
      - "3000:3000"
    volumes:
      - '.:/アプリ名'
    tty: true
    stdin_open: true
#dbとの依存関係を記載
    depends_on:          
      - db
    links:
      - db

  db:
    image: mysql:5.6
    volumes:
      - 'mysql-data:/var/lib/mysql'
    environment:
      - 'MYSQL_ROOT_PASSWORD=自身のパスワード'

database.ymlの編集

config/database.yml
default: &default
  adapter: mysql2   
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: 自身のパスワード
  host: db  #dockerのdbコンテナに対応

development:
  <<: *default
  database: 自身のアプリ名_development

コマンド入力

上記3つのファイルが作成し終わったら実行

①dockerfileを元にimageの作成

$ docker-compose build

②データベースとアプリのコンテナを作成、起動

$ docker-compose run web rails db:create db:migrate

③全てのコンテナの連携・起動

$ docker-compose up

以上を実行後、localhost:3000に接続。

終わりに

導入の中で自分がつまずいたのはrunとupの違いが分からすコマンドが抜けてしまった所でした。docker buildでイメージの作成。docker-compose upのみではコンテナが作られないので、必ずdocker-compose runを行う。
また、間違ってコンテナを作ってしまい、削除する際に便利なコマンドがあったので紹介します。

$ docker-compose down --rmi all --volumes --remove-orphans

こちらで全てのコンテナとイメージをまとめて削除できます。
こんなに簡単に仮想サーバーを立てたり、削除したりできるシステムはすごいと改めて感じました。

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?