質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • MySQL

    7414questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Ruby on Rails 5

    3767questions

  • Docker

    1199questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

  • nginx

    1100questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • docker-compose

    282questions

docker-composeでrailsコンテナが立ち上がらない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 430

■やりたいこと
docker-composeを使い、nginx rails mysqlの各コンテナをローカルに立ち上げたいと思っています。

■問題
railsコンテナが起動後すぐに終了してしまう問題に困っています。
また、dockerをuninstallし、ソースコードもすべて消して最初からやり直すと、なにも設定を変更を触っていないにも関わらずたまに動くことがあるのもよくわかりませんでした。

■前提条件
ソースコードはローカルのソースコードをコンテナ内にマウントするつもりです。
また、railsコンテナが落ちる原因を調査するために、logsコマンドで出力をしようとおもったのですが、確認の仕方が悪いのか内容がなにも出力されない状態です。
アドバイスなり、原因のわかる方がいれば教えていただけると助かります。
足りない情報など、ご指摘あればお願いします。

■環境バージョン
・mac
10.11.6

・docker 
Client:
Version:           18.06.1-ce
API version:       1.38
Go version:        go1.10.3
Git commit:        e68fc7a
Built:             Tue Aug 21 17:21:31 2018
OS/Arch:           darwin/amd64
Experimental:      false

Server:
Engine:
Version:          18.06.1-ce
API version:      1.38 (minimum version 1.12)
Go version:       go1.10.3
Git commit:       e68fc7a
Built:            Tue Aug 21 17:29:02 2018
OS/Arch:          linux/amd64
Experimental:     true

下記設定ファイルになります。
▼ docker-compose.yml

version: '3'
services:
  rails:
    container_name: rails
    build:
      context: ./
      dockerfile: ./containers/rails/Dockerfile
    command: bundle exec unicorn -p 3000 -c config/unicorn.conf.rb
    ports:
      - '3000:3000'
    environment:
      RAILS_ENV: development
      MYSQL_ROOT_PASSWORD: password
    depends_on:
      - db
    volumes:
      - ./:/worker-admin
    links:
      - db
  nginx:
    container_name: nginx
    build: containers/nginx
    ports:
      - '80:80'
    depends_on:
      - rails
    volumes:
      - ./containers/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./containers_data/nginx:/var/log/nginx
    links:
      - rails
  db:
    container_name: db
    image: mysql:8.0.15
    command: mysqld --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_USER: root
      MYSQL_ROOT_PASSWORD: password
    ports:
      - '3316:3306'
    volumes:
      - ./containers_data/mysql:/var/lib/mysql

▼containers/rails/Dockerfile

FROM ruby:2.6.1

RUN apt-get update && apt-get install -y mysql-client vim --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN mkdir /var/lib/mysql && touch /var/lib/mysql/mysql.sock

RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ADD ./containers/mysql/my.cnf /etc/

RUN mkdir /worker-admin
WORKDIR /worker-admin

COPY Gemfile /worker-admin/Gemfile
COPY Gemfile.lock /worker-admin/Gemfile.lock

RUN bundle install

COPY . /worker-admin
EXPOSE 3000

▼containers/nginx/Dockerfile

FROM nginx:1.14.2

RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN apt-get update && apt-get install -y vim --no-install-recommends

ADD nginx.conf /etc/nginx/nginx.conf

▼containers/mysql/my.cnf

[client]
socket=/var/lib/mysql/mysql.sock

▼結果
Starting db ... done
Recreating rails ... done
Recreating nginx ... done
Attaching to db, rails, nginx
db       | 2019-03-04T05:08:46.859924Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
db       | 2019-03-04T05:08:46.860557Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 1
db       | 2019-03-04T05:08:48.758881Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
db       | 2019-03-04T05:08:48.787636Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
db       | 2019-03-04T05:08:48.879031Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.15'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
db       | 2019-03-04T05:08:49.000574Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
rails exited with code 1

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • zembutsu

    2019/04/28 15:35

    ディレクトリを作成し、はじめて `docker-compose up` を実行し、そのあとの `docker-compose logs rails` この内容は何か出てきますでしょうか。
    もし何も出ていないのであれば、何らかの理由で rails アプリケーションが動作していないので、ファイルのコピー漏れが無いかどうか、Compose を使わず単体の docker runで動作するかどうかを確認されたほうが良さそうです。
    なお、「作り直すと動く」のは、ボリュームをお使いだからと思います。ボリュームのなかにファイルがあると、初期化手順がかわったり、想定していなかったファイルができたりして、意図したとおりに動かないと考えられます。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • MySQL

    7414questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Ruby on Rails 5

    3767questions

  • Docker

    1199questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

  • nginx

    1100questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • docker-compose

    282questions