20200711のMySQLに関する記事は8件です。

MySQLのダンプファイルをDockerコンテナで復元する

概要

コンテナを使うことでローカル環境を汚さず
使い終わったらコンテナごと削除されます。

ダンプファイルはMySQLが提供しているサンプルを使用しています。
Other MySQL Documentation - Example Databases
使用しているダンプファイル: world database

環境

  • Docker version 19.03
  • MySQL 5.7

MySQLのコンテナを実行する

# コンテナを実行する
$ docker container run --rm --name some-mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
27b05b9a3337d930941c24e6a4ae507d206619de879e7067ef3855f6bc9710b5

# コンテナが実行されていることを確認する
$ docker container ls --filter "name=some-mysql"
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
27b05b9a3337        mysql:5.7           "docker-entrypoint.s…"   51 seconds ago      Up 49 seconds       3306/tcp, 33060/tcp   some-mysql

ダンプファイルからデータを復元する

# ホストにあるダンプファイルからコンテナにあるMySQLにデータを流し込む
$ docker container exec -i some-mysql /bin/bash -c 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /file/to/path/world.sql

データが復元されているか確認する

# コンテナに接続
$ docker container exec -it some-mysql /bin/bash

# MySQLに接続
root@container_id /# mysql -uroot -p$MYSQL_ROOT_PASSWORD -Dworld

# データーベースの確認
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
5 rows in set (0.00 sec)

# テーブルの確認
mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city            |
| country         |
| countrylanguage |
+-----------------+

# レコードの確認
mysql> select * from city;
+----+----------+-------------+----------+------------+
| ID | Name     | CountryCode | District | Population |
+----+----------+-------------+----------+------------+
|  1 | Kabul    | AFG         | Kabol    |    1780000 |
|  2 | Qandahar | AFG         | Qandahar |     237500 |
...
| 4078 | Nablus | PSE         | Nablus   |     100231 |
| 4079 | Rafah  | PSE         | Rafah    |      92020 |
+------+--------+-------------+----------+------------+

4079 rows in set (0.00 sec)

実行したコンテナを削除する

# コンテナを停止する
$ docker container stop some-mysql
some-mysql

# コンテナが削除されていることを確認する
$ docker container ls --filter "name=some-mysql"
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

参考

Docker Hub - MySQL Description

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

dumpをとってリストアしてくれ!と言われた時の手順書

概要

先日MySQLのdumpをとって、別環境に反映しといて!
といわれて、初めてdumpをとって反映という作業をしたので手順等をφ(..)メモメモ

やりたいこと

環境AのhogeDBのdumpを取得し、環境Bに反映する。

手順

dumpをとる!

今回はtablePlusのGUI操作でdumpを取得したが、コマンドでもできる。

## データベースのダンプをまるっと取得する
$ mysqldump -u USER_NAME -p -h HOST_NAME DB_NAME > OUTPUT_FILE_NAME

他にもテーブルのみのダンプや、定義のみなど、色々オプションはあるので使うときに調べましょう。

圧縮する!

zip -r hoge.zip hoge.dump 

zipコマンドもオプションが色々ある。
例えば、-eでパスワード付き

環境Aから環境Bにdumpファイルを転送する!

scpコマンドをつかいます。

### 
scp [コピー元のパス] [コピー先のパス]
# パスの書き方は
# ユーザ名@サーバのホスト名(or IPアドレス):コピーしたいファイル、もしくは保存先のパス

環境Bでdumpを解凍する!

unzip hoge.zip 

dumpを環境Bに反映する!

nohup mysql [反映先のDB名] < hoge.dump &
  • nohupコマンドについて

## まとめ
基本的なことだが、今までやる機会がなかったので良い経験になった。
nohupコマンドとかは知っていると知らないのじゃ、作業効率に差が出ると思うので、積極的に使いたい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQL EXPLAINの見方

概要

先日先輩からSQL流す前に、EXPLAINをつけるようにしてね!
と言われてそのとおり実行したのですが、出力結果の内容を理解していなかったので覚え書き...

EXPLAINコマンドとは

流したいSQLの前にEXPLAINをつけることで、そのクエリの実行計画をみることができる。
そこで出力された情報をもとにボトルネックを探して、チューニングをしていく。

mysql> EXPLAIN select * from users_tbl;
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
|  1 | SIMPLE      | users_tbl | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    6 |   100.00 | NULL  |
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

出力結果の見方

id

SELECT識別子、実行順序を示してる

select_type

詳細
SIMPLE サブクエリやユニオンが含まれていない単純なselect文
SUBQUERY select文のサブクエリに指定されているselect文
PRIMARY UNIONの1つめのselect文
UNION UNIONの2つめ以降のselect文
UNION_RESULT UNIONの無名一時テーブルから結果を取得するselect文

table

出力の行で参照しているテーブルの名前。

partitions

クエリが参照したパーティションテーブル。パーティションされていない場合はNULL
※パーティショニングとは、一つのテーブルを分割する機能

type

テーブルの結合方法
- ALL
- フルテーブルスキャン
- インデックスがはられていないため一番遅い

  • index

    • フルインデックススキャン
    • インデックスがはられていること以外はALLと同じ、2番目に遅い
  • rabge

    • indexを使用して、範囲検索
  • const

    • PKもしくはuniqueキーを参照して検索、一番速い

possible_keys

テーブルの行検索に使用できるindex。NULLの場合は参照するインデックスがない

key

MySQLが実際に使用してindex

key_ren

MySQLが実際に使用したindexの長さ

ref

行検索の際にindexと比較されるカラムや値。

rows

クエリ実行のためにMySQLが調査する行数。(行数が多い時は推定値)

filtered

テーブル条件によってフィルタ処理される行数の割合。

Extra

MySQL がクエリーを解決する方法に関する追加情報
詳細はhttps://dev.mysql.com/doc/refman/5.6/ja/explain-output.html#explain-extra-information

まとめ

type=null かつ key=null の場合は、インデックスがはられていないテーブルをフルスキャンしているので、要改善。

EXPLAINやチューニングに関する記事を色々調べていると知らないことばかりだった...
今後はSQL流す前にEXPLAINをつけて実行計画をする習慣をつけたい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

30代未経験者の地方(愛知)へのエンジニア転職奮闘記始めます

はじめまして!
33歳のプログラミング未経験者である私が、地元の愛知県に転職活動をしている記録を残していきたいと思います。学んでいる言語はもちろん、転職活動をしていて感じたことを書きたいなと思います。

アラサーとなった今、人口が減って経済が縮小していく日本で、どのようなキャリアを造っていくのか悩むことが多くなってきました。そして周りにも同じ悩みをもつ同世代の友人は多いです。
自分の記録が、キャリア形成について悩んでいる方々に少しでもお役に立てばいいなと思います。

自己紹介

私は、愛知県生まれ、仕事の関係で静岡県に住み一般企業(安定的企業)で事務職に就いています。
専門学校卒で特段目立ったスキルもなく、凡人サラリーマンです。

なぜ転職をしようと考えたのか

私の就いている会社は比較的安定的な企業で、周りの人にも「その会社なら、一生安泰だわ」と言われるような会社です。

ただ内部で仕事をしていると悩むことも多いのです。

例えば
基本的に仕事はルーティーン業務。過去の記録をコピペするような業務です。
言われたことをミスなく黙ってやっていればいいのです。:angel_tone5:
日々、これは自分がやらなくてもいいんじゃないかな??と感じたり最近ではRPAという自動化システムが導入され始めて、さらに自身の存在価値が疑われるような状況になってきました。

なぜエンジニアに転職しようと考えたのか?

基本的に以下の3点です。

・手に職を付けたかったから
・ITがこれからも伸びていく産業だと思うから
・人々の生活を便利にして豊かにすることが出来ると考えたから

今回は初投稿なのでここまでとして、次回以降、なぜエンジニアになりたいかさらに掘り下げていきたいと思います!
次回は「凡人サラリーマン転職フェアに行く」をテーマに投稿したいと思います。
:walking_tone1:よかったら見てください:runner:

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

30代未経験者の地方(愛知)へのエンジニア転職奮闘記

33歳のプログラミング未経験者である私が、地元の愛知県に転職活動をしている記録を残していきたいと思います。学んでいる言語はもちろん、転職活動をしていて感じたことを書きたいなと思います。

20代から現在にかけて、人口が減って経済が縮小していく日本で、どのようなキャリアを造っていくのか悩むことはとても多いです。そして周りにも同じ悩みをもつ同世代の友人は多いです。
自分の記録が、キャリア形成について、少しでもお役に立てばいいなと思います。

自己紹介

私は、愛知県生まれ、仕事の関係で静岡県に住み一般企業(安定的企業)で事務職に就いています。
専門学校卒で特段目立ったスキルもなく、凡人サラリーマンです。

なぜ転職をしようと考えたのか

私の就いている会社は比較的安定的な企業で、周りの人にも「その会社なら、一生安泰だわ」と言われるような会社です。

ただ内部で仕事をしていると悩むことも多いのです。

例えば
基本的に仕事はルーティーン業務。過去の記録をコピペするような業務です。
言われたことをミスなく黙ってやっていればいいのです。:angel_tone5:
日々、これは自分がやらなくてもいいんじゃないかな??と感じたり最近ではRPAという自動化システムが導入され始めて、さらに自身の存在価値が疑われるような状況になってきました。

なぜエンジニアに転職しようと考えたのか?

基本的に以下の3点です。

・手に職を付けたかったから
・ITがこれからも伸びていく産業だと思うから
・人々の生活を便利にして豊かにすることが出来ると考えたから

次回は「凡人サラリーマン転職フェアに行く」をテーマに投稿したいと思います。
:walking_tone1:よかったら見てください:runner:

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Rails]DBにデータが登録されない場合の対処法

はじめに

フォーム入力内容をDBに保存したいがハマったのでアウトプット

環境

Rails 5.0.7.2
ruby 2.5.1
mysql 14.14

問題点

フォーム入力内容を保存しようとすると、パラメータに保存されているがDBに保存されない。

対処方法

保存するメソッドの後ろに!をつけて原因を確認。

すると、validation failed:User must exist(エラー内容は異なる場合がありそう)

原因

アソシエーションが組まれている際に、該当の外部キーが入っておらず、バリデーションで弾かれているのが原因。

optional: trueを記述。

goal.rb
class Goal < ApplicationRecord

  validates :name, presence: true, uniqueness: true
  validates :time, presence: true, uniqueness: true
  validates :days, presence: true, uniqueness: true
  belongs_to :user, optional: true #ここを編集
end

optional: trueとは、belongs_toの外部キーのnilを許可するというもの。

これでDBに保存できると思います。
参考にしてください!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

elasticsearchを使ってみる

Elasticsearchは、分散型でオープンソースの検索・分析エンジンです。by elastic
って、ぶっちゃけ何言ってるかよくわかんない。
全文検索できるっていうから、ちょっと前にクローラーでデータ登録してプチgoogleみたいに使って喜んでいたのだが、kibanaが絡んできたりするとなんかよくわかんねー。
なので、なんかのデータを登録して、よくわからない条件で分析などしてみて、これでおいらもデータサイエンティストさ、ごーごーデータどぶリン、って言ってみたい。
これは、そんな野望の全貌をつづった作業ログである。なんちて。

1.elasticsearchを入れてみる

環境はこんな感じにしてみる。
・VirtualBoxによる仮想サーバーを利用
・OSはcentos8
・ホストosはwindows10だけどね

centos8がインストールされたVirtualboxの仮想サーバーは、下ごしらえで各自作っておくように。

ここにjavaとelasticsearchをインストールする。
参考サイト:CentOs8 Elasticsearchをインストールする手順
言われるままにコマンド入れたりすると、javaとelasticsearchがインストールされた。よしよし。
そのあとservice登録、firewall設定と進んで、ホストOSからアクセスしたら、エラーになった。
firewall設定で開けるポートって、9200じゃね?
9200開けてみたら、つながりました。

2.データを投入してみる

とりあえずPostmanでjsonデータをいきなり入れてみる。
image.png
なんか出来たっぽい。
image.png
入れたキーを指定してGETしてみる。
image.png
さっき入れたデータが_sourceの中に入っている。
image.png
これだけ…?何にもしないでデータ登録&呼び出しができてしまった。

3.kibanaをインストールしてみる

このサイトを参考にした。さっきの記事とおんなじ人だね。多謝!
なんか設定は正しく出来ているのに、つながったりつながらなかったりする。
サーバー再起動等行って、なんか立ち上がったようだ。
image.png

4.kibanaで分析してみる

ここまではいいのだ。大体みんなが言った通りやっていればたどり着くのだ。
ここから俺はどうしたらいいのだ?
試しにkibanaでさっきPostmanから投入したデータを参照してみる。

左メニューのManagementの中の、Dev Toolsを開く
image.png
入れるコマンドは基本curlとかと同じようなイメージ。
ただ、elasticsearch前提なので、インデックス名以降を指定すればよいようだ。
image.png
入力したコマンドの右側の緑三角をクリックすると、右側に結果が表示されます。
image.png
でも、こうじゃねーんだよ。なんかもっと、データサイエンティストなどぶリンなあれをしたいんだよ。
なので、Discoverを使ってみる。
左メニューからkibanaの中のDiscoverをクリック。
image.png
どうやらindex patternというものを作るらしい。
image.png
今一つだけ出来ている「receipt」を指定してみる。
image.png
次の画面で検索するときに使用する時間関係の項目を指定する。日付とか時刻とかね。これを指定しないと、後々データが検索できない。
とりあえずcreate_atをしてしておいて、Create index patternをクリック。
image.png
何かができたらしい。
image.png
なんとなく環境出来たっぽいから、データをきちんと入れてみるよ。

5.logstashでMySQLのデータをelasticsearchに入れる

今回は昔ながらの伝票データを入れてみたいよ。
すなわち、ヘッダレコードに合計金額とか入っていて、明細レコードが複数できている、あれだ。よく知らない若者は、お父さんとか年老いたSEに聞いてみてね。
laravelでseeder使って大量発生させたデータがMySQLに入っているので、これをelasticsearchに入れてみる。
elasticsearchでは非正規データを入れろとか、親子関係はお勧めしない、なんて言われるから、logstashの中で伝票データをひとまとめにしてelasticsearchに入れてみる。
とりあえずlogstashをインストールだ。このサイトを参考にさせていただきました。が、インストールはdnfでしちまったよ。この辺は好みか?
インストール出来たら、MySQLからデータを取ってくるよう、logstash.confを作成する。
と、その前にjdbcを入れとかなくちゃならない。
見よう見まねでインストールしてみる。

レポジトリ登録
# dnf localinstall https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
インストール
# dnf install mysql-connector-java

どこに入ったかわからないので、探してみる。

# find / mysql-connector* | grep "mysql-connector"
/var/cache/dnf/mysql-connectors-community-36a49e3556a965a0
/var/cache/dnf/mysql-connectors-community-36a49e3556a965a0/repodata
/var/cache/dnf/mysql-connectors-community-36a49e3556a965a0/repodata/repomd.xml
/var/cache/dnf/mysql-connectors-community-36a49e3556a965a0/repodata/4a1e62c80aefb9ae9dcc85524652f5e6f6d01fdb-filelists.xml.gz
/var/cache/dnf/mysql-connectors-community-36a49e3556a965a0/repodata/408890bf2054a439cca0f5a2988e8e11c7a08276-primary.xml.gz
/var/cache/dnf/mysql-connectors-community-36a49e3556a965a0/packages
/var/cache/dnf/mysql-connectors-community.solv
/var/cache/dnf/mysql-connectors-community-filenames.solvx
/usr/share/doc/mysql-connector-java
/usr/share/doc/mysql-connector-java/CHANGES
/usr/share/doc/mysql-connector-java/INFO_BIN
/usr/share/doc/mysql-connector-java/INFO_SRC
/usr/share/doc/mysql-connector-java/LICENSE
/usr/share/doc/mysql-connector-java/README
/usr/share/java/mysql-connector-java.jar

/usr/share/java/に入っていた。
これを指定して、logstash.confを作ってみる。

/etc/logstash/conf.d/logstash.conf
input {
  jdbc {
    jdbc_driver_library => "/usr/share/java/mysql-connector-java.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://192.168.10.10:3306/receipt"
    jdbc_user => "receipt"
    jdbc_password => "p@ssw0rd"
    statement => "select * from receipt inner join receipt_detail on receipt.id = receipt_detail.receipt_id"
  }
}
filter {
  jdbc_streaming {
    jdbc_driver_library => "/usr/share/java/mysql-connector-java.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://192.168.10.10:3306/receipt"
    jdbc_user => "receipt"
    jdbc_password => "p@ssw0rd"
    statement => "select * from receipt_detail where receipt_id = :receipt_id"
    parameters => {"receipt_id" => "id"}
    target => "receipt_details"
  }
} 
output {
  elasticsearch {
    index => "receipt"
  }
} 

conf書いたら保存して、logstashを実行する。
logstashは/usr/share/logstash/binに入っていた。
なので、こんな感じで動かしてみる。

# cd /usr/share/logstash
# bin/logstash -f "/etc/logstash/conf.d/logstash.conf"

kibanaで見てみると、なんか入ってる。
image.png
よしゃ。
左メニューから項目をポイントして、表示された「ADD」のボタンをクリックすると、その項目だけ表示されるようになる。必要な項目だけ選べるので見やすくなる。
image.png
しかし、どうせやるならやっぱりグラフとか地図とかにしたいよね。
とりあえずグラフ作ってみよう。
右メニューからvisualizeをクリックする。
image.png
最初に作るときは、真ん中の青ボタンをクリック。
image.png
New Visualizationの中からPieをクリック。
image.png
作成したreceiptを選択。
image.png
初期画面が表示される。
image.png
まずは対象となる時間帯を指定する。右上の、今「Last 15 minutes」の前にあるカレンダーマークをクリック。
時間帯を選択できる画面が表示される。
image.png
今回はざっくり「Last 1year」を選択する。と、初期画面が表示される。
image.png
右の「Buckets」の「Add」をクリックすると追加するBucketの選択画面が表示されるので、Split sliceをクリック。
image.png
Splitslice
BacketsにSplit sliceが表示され、その下に「Aggregation」という項目が表示される。リストボックスから「RANGE」を指定すると、項目と範囲を指定できる画面が表示される
image.png
Fieldにグラフにする項目を指定して、その下に値の範囲を指定する。
image.png
適当に指定したら、右下の「Update」をクリックする。
image.png
こんな風にグラフが作成される。
できた!

これでelasticsearchにデータを投入して、kibanaで分析する第一歩ができたね。
実際はどう分析するかが肝なんだろうけど。
それはおいおい考えていくよ。そのうち何とかなるだろう。
それじゃーね。ちゃお、あみーち!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Rails/Docker/mysql】ホストPC直下で開発していたWEBアプリをコンテナで動かしてみたぉ

はじめに

Udemyの動画でDockerを学んだ後、ローカルホストで開発していたアプリケーションをコンテナで動かしてみました。

以下を参考にしながら、まずはdocker-composeを使わずにやってみました。

参考

udemy 米国AI開発者がゼロから教えるDocker講座
https://hub.docker.com/_/rails
https://qiita.com/tatsuya-miyamoto/items/08bd6ea142d02708614f
https://qiita.com/y-suna/items/e52b3af1d80c52b66b31
https://qiita.com/Masato338/items/f162394fbc37fc490dfb

実行環境

アプリケーションサーバ(コンテナ直下): puma4.3.3 (rails5.2.4.1 / ruby 2.5.1)
Database(ホスト直下): MySQL 5.6.47
コンテナ(ホスト直下): docker 19.03.8
ホスト: macOS Catalina 10.15.5

実施手順

既存アプリケーションを壊さないよう、対象となるアプリケーションのフォルダをコピーして実行しました。

$ cp -r ~/project/memo-space ~/project/memo-space_v2

 ~/project/memo-space -> ~/project/memo-space_v2

Dockerfileを作成する。

Dockerfile
FROM ruby:2.5.1
RUN apt-get update
RUN apt-get install -y mysql-client nodejs vim --no-install-recommends
RUN rm -rf /var/lib/apt/lists/*
RUN mkdir /myproject
WORKDIR /myproject
ADD Gemfile /myproject/Gemfile
ADD Gemfile.lock /myproject/Gemfile.lock
RUN gem install bundler
ADD . /myproject

Dockerfileに基づきビルド

terminal
$ cd ~/projects/memo-space_v2
$ docker build .

docker image を確認します。

terminal
 docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
<none>                         <none>              df22a2c4c7f7        56 minutes ago      1.07GB
...

dockerを実行します。
この時、ホストのrails pumaのポート3000番とmysqlのポート3306番にコンテナのポートを紐づけます。
また、ホストのアプリケーションフォルダ「~/projects/memo-space_v2」にコンテナのフォルダ「/myproject」をマウントします。

terminal
$ docker run -it -p 3000:3000 -p 3306:3306 -v ~/projects/memo-space_v2:/myproject df22a2c4c7f7 bash

ファイル「Gemfile.lock」を削除します。

terminal
$ rm Gemfile.lock

bundle installを実行し、必要なGemをインストールします。

terminal
$ bundle install

database.ymlに記載された既存のアプリの定義を次の通り修正します。

修正箇所

・mysqlのhost(追記)
・アプリケーション名(修正)

config/database.yml
# MySQL. Versions 5.0 and up are supported.
#
# Install the MySQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.7/en/old-client.html
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

development:
  <<: *default
  database: memo-space_v2_development   #修正
  host: docker.for.mac.localhost        #追記

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: memo-space_v2_test          #修正

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: memo-space_v2_production   #修正
  adapter: postgresql
  # database: postgresql
  encording: unicorde
  pool: 5
  username: memo-space
  url: <%= ENV['DATABASE_URL'] %>
  password: <%= ENV['MEMO-SPACE_DATABASE_PASSWORD'] %>

※既存アプリでは、元々production環境として、heroku上のpostgresqlを利用しており上記の記載となっていますが、未修正です。

※コンテナからホストPCへのアクセスは、次の通り指定することで実行できました。

terminal
mysql --host=docker.for.mac.localhost -u root

dbをcreateします。

terminal
rails db:create

dbをmigrateします。

terminal
rails db:migrate

コンテナの全てのインタフェースにバインディングすることで、ホストPCからアクセスできるようにします。

terminal
rails s -p 3000 -b '0.0.0.0'

以上により、ホストPCからブラウザでURL「localhost:3000」を指定し、アプリにアクセスできました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む