20210410のMySQLに関する記事は9件です。

MySQL OFFSET句

【MySQL OFFSET句】 テーブルから取得するデータの行数と開始位置を指定 ※LIMIT句を省略して、OFFSET句だけを記述することは出来ない。 ・OFFSET句を使用する場合 LIMIT句に取得するデータの行数を指定。 OFFSET句に取得するデータの開始位置を指定。 (先頭からではなく、指定した位置からデータを取得可能) MySQL -- 1~10番目を飛ばして、11番目から50件取得 SELECT culumn_name FROM table_name LIMIT 50 OFFSET 10; ・OFFSET句を使用しない場合 LIMIT句に取得するデータの開始位置を指定し、取得するデータの行数を指定。 MySQL -- 1~10番目を飛ばして、11番目から50件取得 SELECT culumn_name FROM table_name LIMIT 10, 50;
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

学習週次報告 #9

お疲れ様です。 この記事は、すごく個人的な学習週次報告です。 自分自身の「目標の明確化」「学んだこと・わからないことの整理」「成長記録」のために書いています。 今回も、”今週で主にやったこと”から、 ”今週で学んだこと”、”つまづいたけど7、8割くらい理解できたこと”、 ”つまづいて、今でもよくわかっていないこと”を整理して、 ”次週何をやるべきか”を書いていきます。 今週で主にやったこと 転職活動 Next.jsでISG・ISRの挙動確認 React、ReacrRauter、Redux、ReactRedux、ReduxThunkの復習 React:簡易的な掲示板の作成 ReacrRauter:APIを使ったクイズアプリの作成 Redux:TODOを管理できるツールの作成 ReactRedux:Reduxで作ったツールを元にTODOアプリの作成 ReduxThunk:ReacrRauterで作ったクイズアプリのデータをStore管理できるようにする 家族・友人から集めたフィートバックを中心にポートフォリオを改善 別記事にまとめた:https://qiita.com/Yopipo415/items/41fd9435cdd6cb7ad294 UdemyでMySQLの勉強 https://www.udemy.com/course/the-ultimate-mysql-bootcamp-go-from-sql-beginner-to-expert/ 今週で学んだこと Next.js ISG fallback: true リクエストに応じてCSRでHTML生成 fallback: ‘blocking’ リクエストに応じてSSRでHTML生成 ISR revalidate リクエスト時に指定する秒数に応じてHTML生成 つまづいたけど7、8割くらい理解できたこと 確認ダイアログの出し方(チャットアプリ修正) window.confirm() 参考:https://www.tagindex.com/javascript/window/confirm.html つまづいて、今でもよくわかっていないこと 今週は特に無し 次週何をやるべきか 基本は今週と同じように、就職活動と並行して勉強を続けていこうと思います。 内容は以上です。 コツコツ、コツコツ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel】php artisan migrateエラーが出た SQLSTATE[HY000] [2054]

今回、php artisan migrateでエラーが出て困ったので投稿します。 SQLSTATE[HY000] [2054] The server requested authentication method unknown 認証方式が知らんとか言われた。どうしよ、、、じゃあMySQLで確認しますか。 mysql> select user, host, plugin from mysql.user; 確認するとrootユーザーのパスワードの認証方式はcaching_sha2_passwordであった。なんかMySQL8.0ではデフォルトでこうなっているらしい??? なので変更しましょう! mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'root'; これで変更して無事実行できました!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Laravel + Vue.js + MySQL ] Herokuにデプロイする方法

執筆動機 Twitterにて個人的にフォローさせていただいているゆーたろーさん(@shimotaroo)の記事を拝見しました。 当記事ではPosgreを使用したものになっていましたが、MySQLの場合ばどうすればいいか知りたくなり、本記事を作成しました。 ゆーたろーさんの記事は初心者でも直感的にわかりやすくなっています。ぜひそちらも参考にデプロイを検討してみてください:) 前提 ・Laravelアプリが作成済み ・Herokuアカウント取得済み ・Heroku CLI導入済み ・DBはMySQLを利用 $ composer -V Composer version 2.0.11 2021-02-24 14:57:23 $ php artisan --version Laravel Framework 8.36.2 $ npm -v 7.8.0 Herokuアプリの作成 ①Herokuのログイン $ heroku login まず初めに、Herokuにログインします。 作成したアプリケーションのディレクトリに移動し、以下のコマンドを打ちます。 ②アプリの作成 $ heroku apps:create [アプリ名] 適当にアプリ名を決めてアプリを作成します。 この時、ユニークな名前でなくてはいけません。 エラーが出る場合は、Heroku上に存在しない名前をつけて再度コマンドを叩いてください。 ③MySQL(ClearDB)の追加 $ heroku addons:create cleardb:ignite その後、Heroku上で使えるMySQL(ClearDB)を追加します。 Cleardbのignite版は、無料で使用する事が可能です。 ただし、クレカを登録する必要があるので、ブラウザ上のHerokuからAccountSettings -> Billingでクレカを登録してください 。 ④Buildpackの追加 $ heroku buildpacks:add heroku/php $ heroku buildpacks:add heroku/nodejs 順番はどっちでも良いです。 DBの環境設定 .envファイルはアップされないので、手動でHerokuに環境変数を登録する必要があります。 ①ClearDBの情報を確認する $ heroku config:get CLEARDB_DATABASE_URL mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true ②Herokuに環境変数を登録 ①を参考に、環境変数を登録していきます。 $ heroku config:set DB_DATABASE=[データベース名] $ heroku config:set DB_HOST=[ホスト名] $ heroku config:set DB_USERNAME=[ユーザー名] $ heroku config:set DB_PASSWORD=[パスワード] $ heroku config:set APP_KEY=$(php artisan key:generate --show) 一番下はそのままコピペでうまくいきます。 最低限これだけ登録できれば、動きます。 ファイルの変更、追加 ①Procfileの追加 ルートディレクトリにProcfileを追加します。 ./Procfile web: vendor/bin/heroku-php-apache2 public/ 上記を記入して終わりです。 ②本番環境でのHTTPS化 AppServiceProvider.app public function boot() { if (\App::environment('production')) { \URL::forceScheme('https'); } } 本番環境でのhttpsを強制します。 AppServiceProvider.appに追加してください。 ③DBの文字数設定 Herokuではvarchar型の文字数はデフォルトの255では大きすぎるため191に設定します。 AppServiceProvider.app use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); } 同じくAppServiceProvider.appのbootに追加してください。 また、useで名前空間をインポートします。 デプロイ ①ローカルリポジトリにHerokuアプリ用のリモートリポジトリを登録 git管理をしていなかった場合 $ git init $ heroku git:remote -a {アプリ名} git管理をすでにしている場合 $ heroku git:remote -a {アプリ名} アプリ名は自分で名付けたものを使用してください。 ②デプロイする $ git checkout -b 'main' $ git add . $ git commit -m 'first commit' $ git push heroku main ③マイグレーションやシーディングの実行 $ heroku run php artisan migrate --seed シーディングを用意していない場合は、--seedを除いてコマンドを叩いてください 。 このように表示されるのでyesと入力してください。 アプリを開いてみる $ heroku open エラーなく表示されたら成功です!! お疲れ様です^^ アドバイス もし上記のようにデプロイしてもうまく表示されない場合は、 herokuのログを確認したり、Laravelのデバックモードをオンにしてみたらいいかも ログの確認 $ heroku logs -t ターミナルからログを確認できます。 詳細なエラーを確認するには、Herokuの環境変数にLOG_CHANNEL=errorlogを設定します。 デバックモード app.php /* |-------------------------------------------------------------------------- | Application Debug Mode |-------------------------------------------------------------------------- | | When your application is in debug mode, detailed error messages with | stack traces will be shown on every error that occurs within your | application. If disabled, a simple generic error page is shown. | */ 'debug' => env('APP_DEBUG', true), 変更したのちにデプロイの手順を取り、エラーを確認できます。 うまく動いたら、デバックモードをfalseにしておきましょう。 参考にさせていただいた記事、ドキュメント
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[ Laravel + Vue.js + MySQL ] Herokuにデプロイする方法

執筆動機 Twitterにて個人的にフォローさせていただいているゆーたろーさん(@shimotaroo)の記事を拝見しました。 当記事ではPosgreを使用したものになっていましたが、MySQLの場合ばどうすればいいか知りたくなり、本記事を作成しました。 ゆーたろーさんの記事は初心者でも直感的にわかりやすくなっています。ぜひそちらも参考にデプロイを検討してみてください:) 前提 ・Laravelアプリが作成済み ・Herokuアカウント取得済み ・Heroku CLI導入済み ・DBはMySQLを利用 $ composer -V Composer version 2.0.11 2021-02-24 14:57:23 $ php artisan --version Laravel Framework 8.36.2 $ npm -v 7.8.0 Herokuアプリの作成 ①Herokuのログイン $ heroku login まず初めに、Herokuにログインします。 作成したアプリケーションのディレクトリに移動し、以下のコマンドを打ちます。 ②アプリの作成 $ heroku apps:create [アプリ名] 適当にアプリ名を決めてアプリを作成します。 この時、ユニークな名前でなくてはいけません。 エラーが出る場合は、Heroku上に存在しない名前をつけて再度コマンドを叩いてください。 ③MySQL(ClearDB)の追加 $ heroku addons:create cleardb:ignite その後、Heroku上で使えるMySQL(ClearDB)を追加します。 Cleardbのignite版は、無料で使用する事が可能です。 ただし、クレカを登録する必要があるので、ブラウザ上のHerokuからAccountSettings -> Billingでクレカを登録してください 。 ④Buildpackの追加 $ heroku buildpacks:add heroku/php $ heroku buildpacks:add heroku/nodejs 順番はどっちでも良いです。 DBの環境設定 .envファイルはアップされないので、手動でHerokuに環境変数を登録する必要があります。 ①ClearDBの情報を確認する $ heroku config:get CLEARDB_DATABASE_URL mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true ②Herokuに環境変数を登録 ①を参考に、環境変数を登録していきます。 $ heroku config:set DB_DATABASE=[データベース名] $ heroku config:set DB_HOST=[ホスト名] $ heroku config:set DB_USERNAME=[ユーザー名] $ heroku config:set DB_PASSWORD=[パスワード] $ heroku config:set APP_KEY=$(php artisan key:generate --show) 一番下はそのままコピペでうまくいきます。 最低限これだけ登録できれば、動きます。 ファイルの変更、追加 ①Procfileの追加 ルートディレクトリにProcfileを追加します。 ./Procfile web: vendor/bin/heroku-php-apache2 public/ 上記を記入して終わりです。 ②本番環境でのHTTPS化 AppServiceProvider.app public function boot() { if (\App::environment('production')) { \URL::forceScheme('https'); } } 本番環境でのhttpsを強制します。 AppServiceProvider.appに追加してください。 ③DBの文字数設定 Herokuではvarchar型の文字数はデフォルトの255では大きすぎるため191に設定します。 AppServiceProvider.app use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); } 同じくAppServiceProvider.appのbootに追加してください。 また、useで名前空間をインポートします。 デプロイ ①ローカルリポジトリにHerokuアプリ用のリモートリポジトリを登録 git管理をしていなかった場合 $ git init $ heroku git:remote -a {アプリ名} git管理をすでにしている場合 $ heroku git:remote -a {アプリ名} アプリ名は自分で名付けたものを使用してください。 ②デプロイする $ git checkout -b 'main' $ git add . $ git commit -m 'first commit' $ git push heroku main ③マイグレーションやシーディングの実行 $ heroku run php artisan migrate --seed シーディングを用意していない場合は、--seedを除いてコマンドを叩いてください 。 このように表示されるのでyesと入力してください。 アプリを開いてみる $ heroku open エラーなく表示されたら成功です!! お疲れ様です^^ アドバイス もし上記のようにデプロイしてもうまく表示されない場合は、 herokuのログを確認したり、Laravelのデバックモードをオンにしてみたらいいかも ログの確認 $ heroku logs -t ターミナルからログを確認できます。 詳細なエラーを確認するには、Herokuの環境変数にLOG_CHANNEL=errorlogを設定します。 デバックモード app.php /* |-------------------------------------------------------------------------- | Application Debug Mode |-------------------------------------------------------------------------- | | When your application is in debug mode, detailed error messages with | stack traces will be shown on every error that occurs within your | application. If disabled, a simple generic error page is shown. | */ 'debug' => env('APP_DEBUG', true), 変更したのちにデプロイの手順を取り、エラーを確認できます。 うまく動いたら、デバックモードをfalseにしておきましょう。 参考にさせていただいた記事、ドキュメント
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel + Vue.js + MySQL】 Herokuにデプロイする方法

執筆動機 Twitterにて個人的にフォローさせていただいているゆーたろーさん(@shimotaroo)の記事を拝見しました。 当記事ではPosgreを使用したものになっていましたが、MySQLの場合ばどうすればいいか知りたくなり、本記事を作成しました。 ゆーたろーさんの記事は初心者でも直感的にわかりやすくなっています。ぜひそちらも参考にデプロイを検討してみてください:) 前提 ・Laravelアプリが作成済み ・Herokuアカウント取得済み ・Heroku CLI導入済み ・DBはMySQLを利用 $ composer -V Composer version 2.0.11 2021-02-24 14:57:23 $ php artisan --version Laravel Framework 8.36.2 $ npm -v 7.8.0 Herokuアプリの作成 ①Herokuのログイン $ heroku login まず初めに、Herokuにログインします。 作成したアプリケーションのディレクトリに移動し、以下のコマンドを打ちます。 ②アプリの作成 $ heroku apps:create [アプリ名] 適当にアプリ名を決めてアプリを作成します。 この時、ユニークな名前でなくてはいけません。 エラーが出る場合は、Heroku上に存在しない名前をつけて再度コマンドを叩いてください。 ③MySQL(ClearDB)の追加 $ heroku addons:create cleardb:ignite その後、Heroku上で使えるMySQL(ClearDB)を追加します。 Cleardbのignite版は、無料で使用する事が可能です。 ただし、クレカを登録する必要があるので、ブラウザ上のHerokuからAccountSettings -> Billingでクレカを登録してください 。 ④Buildpackの追加 $ heroku buildpacks:add heroku/php $ heroku buildpacks:add heroku/nodejs 順番はどっちでも良いです。 DBの環境設定 .envファイルはアップされないので、手動でHerokuに環境変数を登録する必要があります。 ①ClearDBの情報を確認する $ heroku config:get CLEARDB_DATABASE_URL mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true ②Herokuに環境変数を登録 ①を参考に、環境変数を登録していきます。 $ heroku config:set DB_DATABASE=[データベース名] $ heroku config:set DB_HOST=[ホスト名] $ heroku config:set DB_USERNAME=[ユーザー名] $ heroku config:set DB_PASSWORD=[パスワード] $ heroku config:set APP_KEY=$(php artisan key:generate --show) 一番下はそのままコピペでうまくいきます。 最低限これだけ登録できれば、動きます。 ファイルの変更、追加 ①Procfileの追加 ルートディレクトリにProcfileを追加します。 ./Procfile web: vendor/bin/heroku-php-apache2 public/ 上記を記入して終わりです。 ②本番環境でのHTTPS化 AppServiceProvider.app public function boot() { if (\App::environment('production')) { \URL::forceScheme('https'); } } 本番環境でのhttpsを強制します。 AppServiceProvider.appに追加してください。 ③DBの文字数設定 Herokuではvarchar型の文字数はデフォルトの255では大きすぎるため191に設定します。 AppServiceProvider.app use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); } 同じくAppServiceProvider.appのbootに追加してください。 また、useで名前空間をインポートします。 デプロイ ①ローカルリポジトリにHerokuアプリ用のリモートリポジトリを登録 git管理をしていなかった場合 $ git init $ heroku git:remote -a {アプリ名} git管理をすでにしている場合 $ heroku git:remote -a {アプリ名} アプリ名は自分で名付けたものを使用してください。 ②デプロイする $ git checkout -b 'main' $ git add . $ git commit -m 'first commit' $ git push heroku main ③マイグレーションやシーディングの実行 $ heroku run php artisan migrate --seed シーディングを用意していない場合は、--seedを除いてコマンドを叩いてください 。 このように表示されるのでyesと入力してください。 アプリを開いてみる $ heroku open エラーなく表示されたら成功です!! お疲れ様です^^ アドバイス もし上記のようにデプロイしてもうまく表示されない場合は、 herokuのログを確認したり、Laravelのデバックモードをオンにしてみたらいいかも ログの確認 $ heroku logs -t ターミナルからログを確認できます。 詳細なエラーを確認するには、Herokuの環境変数にLOG_CHANNEL=errorlogを設定します。 デバックモード app.php /* |-------------------------------------------------------------------------- | Application Debug Mode |-------------------------------------------------------------------------- | | When your application is in debug mode, detailed error messages with | stack traces will be shown on every error that occurs within your | application. If disabled, a simple generic error page is shown. | */ 'debug' => env('APP_DEBUG', true), 変更したのちにデプロイの手順を取り、エラーを確認できます。 うまく動いたら、デバックモードをfalseにしておきましょう。 参考にさせていただいた記事、ドキュメント
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【21.04.09】DockerでRails x MySQLの環境構築

Docker公式リファレンス バージョン指定について RailsもRubyもMySQLも基本「これから開発するよ!」って時はその時の最新版を指定すればokです。 ・既存コードに関して改修をする ・保守する場合 時には、バージョンの変更はリスクなので、固定する方がよいらしいです。 ・DockerhubにあるMySQLのimageはこちら ・DockerhubにあるRubyのimageはこちら 私の環境 % sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H524 まずは必要ファイルを作っていきます。 プロジェクトファイルを新規作成 & その下に移動 terminal. mkdir projectfile && cd projectfile 必須6ファイルを一気に新規作成 terminal. %touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,entrypoint.sh,.env} Dockerfileの編集 ここまでできたらvimでDockerfileを開いて以下をコピペ % vi Dockerfileで開けます。 ※Dockerfile=Docker imageを作るための設計書 ※Dockerfileのコマンドについては公式リファレンスのこちらを参照してください。 dockerfile. FROM ruby:3.0.1 ENV LANG C.UTF-8 ENV APP_ROOT /app # install required libraries RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update -qq && \ apt-get install -y --no-install-recommends \ build-essential \ nodejs \ yarn && \ apt-get clean && \ rm --recursive --force /var/lib/apt/lists/* # create working directory RUN mkdir $APP_ROOT WORKDIR $APP_ROOT # bundle install COPY Gemfile $APP_ROOT/Gemfile COPY Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install --jobs 4 --retry 3 # create app in container COPY . $APP_ROOT # script to be executed every time the container starts COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process CMD ["rails", "server", "-b", "0.0.0.0"] ・curlコマンド=サーバから、もしくはサーバへデータ転送を行うコマンド docker-compose.ymlの編集 docker-compose.yml version: '3.7' services: db: image: mysql:8.0.20 volumes: - mysql:/var/lib/mysql:delegated ports: - '3307:3306' command: --default-authentication-plugin=mysql_native_password env_file: .env web: build: context: . dockerfile: Dockerfile command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" tty: true stdin_open: true env_file: .env depends_on: - db ports: - '3000:3000' volumes: - .:/app:cached - bundle:/usr/local/bundle:delegated - node_modules:/app/node_modules - tmp-data:/app/tmp/sockets volumes: mysql: bundle: node_modules: tmp-data: Gemfileの編集 Gemfile. source 'https://rubygems.org' gem 'rails', '6.1.3.1' 少なって感じだけど、 source 'https://rubygems.org'で大体必要なgem達は引っ張ってきてくれるみたいなので大丈夫。     .envファイルの編集 env. MYSQL_ROOT_PASSWORD=password TZ=Japan entrypoint.shの編集 entrypoint.sh #!/bin/bash set -e # Remove a potentially pre-existing server.pid for Rails. rm -f /myapp/tmp/pids/server.pid # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@"       参考記事 【Dockerで環境構築】Rails 6 & MySQL 8   
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【21.04.09】DockerでRails6 x MySQL8の環境構築

Docker公式リファレンス バージョン指定について RailsもRubyもMySQLも基本「これから開発するよ!」って時はその時の最新版を指定すればokです。 ・既存コードに関して改修をする ・保守する場合 時には、バージョンの変更はリスクなので、固定する方がよいらしいです。 ・DockerhubにあるMySQLのimageはこちら ・DockerhubにあるRubyのimageはこちら 私の環境 % sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H524 作業の流れ STEP1. 各種ファイルの用意 STEP2. rails new でアプリ作成 STEP3. イメージのビルド STEP4. database.yml の設定と DB 接続 STEP5. コンテナ起動 STEP1. まずは必要ファイルを作っていきます。 プロジェクトファイルを新規作成 & その下に移動 terminal. mkdir projectfile && cd projectfile 必須6ファイルを一気に新規作成 terminal. %touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,entrypoint.sh,.env} ※ここでターミナルで%lsで見てみても、.envファイルが見当たらないと思いますが、ちゃんと作られてるのでご安心を。 Dockerfileの編集 ここまでできたらvimでDockerfileを開いて以下をコピペ % vi Dockerfileで開けます。 ※Dockerfile=Docker imageを作るための設計書 ※Dockerfileのコマンドについては公式リファレンスのこちらを参照してください。 dockerfile. FROM ruby:3.0.1 ENV LANG C.UTF-8 ENV APP_ROOT /app # install required libraries RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update -qq && \ apt-get install -y --no-install-recommends \ build-essential \ nodejs \ yarn && \ apt-get clean && \ rm --recursive --force /var/lib/apt/lists/* # create working directory RUN mkdir $APP_ROOT WORKDIR $APP_ROOT # bundle install COPY Gemfile $APP_ROOT/Gemfile COPY Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install --jobs 4 --retry 3 # create app in container COPY . $APP_ROOT # script to be executed every time the container starts COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process CMD ["rails", "server", "-b", "0.0.0.0"] ・curlコマンド=サーバから、もしくはサーバへデータ転送を行うコマンド docker-compose.ymlの編集 docker-compose.yml version: '3.7' services: db: image: mysql:8.0.20 volumes: - mysql:/var/lib/mysql:delegated ports: - '3307:3306' command: --default-authentication-plugin=mysql_native_password env_file: .env web: build: context: . dockerfile: Dockerfile command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" tty: true stdin_open: true env_file: .env depends_on: - db ports: - '3000:3000' volumes: - .:/app:cached - bundle:/usr/local/bundle:delegated - node_modules:/app/node_modules - tmp-data:/app/tmp/sockets volumes: mysql: bundle: node_modules: tmp-data: Gemfileの編集 Gemfile. source 'https://rubygems.org' gem 'rails', '6.1.3.1' 少なって感じだけど、 source 'https://rubygems.org'で大体必要なgem達は引っ張ってきてくれるみたいなので大丈夫。     .envファイルの編集 .envファイル=秘密鍵などを隠しておくためのファイルです。 env. MYSQL_ROOT_PASSWORD=password TZ=Japan entrypoint.shの編集 普通にdockerを立てると、pidsファイルになんらかの数字が書き込まれてしまってエラーの原因(この記事みたいな)になります。 なので、それを事前に防いでおくためのコードをこのentrypoint.shに記述しておきます。 entrypoint.sh #!/bin/bash set -e # Remove a potentially pre-existing server.pid for Rails. rm -f /myapp/tmp/pids/server.pid # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@"    STEP2. Docker上でrails new terminal. docker-compose run --rm web rails new . --force --no-deps --database=mysql --skip-turbolinks --skip-test docker-compose run --rm web bin/rails webpacker:install (↑のコマンドdocker-compose run --rm web rails new . --force --no-deps --database=mysql --skip-turbolinks --skip-test --webpackerだけでできる気がする) たくさんファイルができました! terminal. % ls Dockerfile config package.json Gemfile config.ru postcss.config.js Gemfile.lock db public README.md docker-compose.yml storage Rakefile entrypoint.sh tmp app lib vendor babel.config.js log yarn.lock bin node_modules STEP3. config/database.ymlを編集 config/database.yml default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV.fetch('MYSQL_USERNAME') { 'root' } %> password: <%= ENV.fetch('MYSQL_PASSWORD') { 'password' } %> host: <%= ENV.fetch('MYSQL_HOST') { 'db' } %> development: <<: *default database: rails_app_dev test: <<: *default database: rails_app_test production: <<: *default database: rails_app_prd username: app password: hoge   Dockerイメージをビルドし、DB作成 docker-compose build docker-compose run web bin/rails db:create コンテナを起動 docker-compose up -d Your're on Rails!が出たら成功! 補足 docker上でRails開発をする時のコマンドたち terminal. $ docker-compose run web bundle exec rails コマンド モデルの作成 terminal. docker-compose run web bundle exec rails g model User コントローラの作成 terminal. docker-compose run web bundle exec rails g controller Homepages index terminal. docker-compose run web bundle exec rails g rspec:install Docker上でMySQLに接続する方法 参考記事: 【Docker×MySQL】Docker環境下でMySQLコンテナに接続する方法(テーブル情報を確認) docker psでdbコンテナの名前を確認。(※以下の場合は、上から2つめのコンテナのproject_file_db_1が名前) % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7de3cc82f8db project_file_web "entrypoint.sh bash …" 14 minutes ago Up 14 minutes 0.0.0.0:3000->3000/tcp project_file_web_1 026f77ef5f58 mysql:8.0.20 "docker-entrypoint.s…" 2 hours ago Up 2 hours 33060/tcp, 0.0.0.0:3307->3306/tcp project_file_db_1 以下のコマンドでMySQLコンテナに接続(project_file_db_1の所は各自のDBコンテナ名にしてください) 前述した % docker exec -it project_file_db_1 bash root@026f77ef5f58:/# 接続できたらMySQLにアクセス。 root@026f77ef5f58:/#mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) root@026f77ef5f58:/# 参考記事 【Dockerで環境構築】Rails 6 & MySQL 8 【Rails】Rails 6.0 x Docker x MySQLで環境構築
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【21.04.09】DockerでRails6 x MySQL8で開発環境を構築する

Docker公式リファレンス バージョン指定について RailsもRubyもMySQLも基本「これから開発するよ!」って時はその時の最新版を指定すればokです。 ・既存コードに関して改修をする ・保守する場合 時には、バージョンの変更はリスクなので、固定する方がよいらしいです。 ・DockerhubにあるMySQLのimageはこちら ・DockerhubにあるRubyのimageはこちら 私の環境 % sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H524 作業の流れ STEP1. 各種ファイルの用意 STEP2. rails new でアプリ作成 STEP3. イメージのビルド STEP4. database.yml の設定と DB 接続 STEP5. コンテナ起動 STEP1. まずは必要ファイルを作っていきます。 プロジェクトファイルを新規作成 & その下に移動 terminal. mkdir projectfile && cd projectfile 必須6ファイルを一気に新規作成 terminal. %touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,entrypoint.sh,.env} ※ここでターミナルで%lsで見てみても、.envファイルが見当たらないと思いますが、ちゃんと作られてるのでご安心を。 Dockerfileの編集 ここまでできたらvimでDockerfileを開いて以下をコピペ % vi Dockerfileで開けます。 ※Dockerfile=Docker imageを作るための設計書 ※Dockerfileのコマンドについては公式リファレンスのこちらを参照してください。 dockerfile. FROM ruby:3.0.1 ENV LANG C.UTF-8 ENV APP_ROOT /app # install required libraries RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update -qq && \ apt-get install -y --no-install-recommends \ build-essential \ nodejs \ yarn && \ apt-get clean && \ rm --recursive --force /var/lib/apt/lists/* # create working directory RUN mkdir $APP_ROOT WORKDIR $APP_ROOT # bundle install COPY Gemfile $APP_ROOT/Gemfile COPY Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install --jobs 4 --retry 3 # create app in container COPY . $APP_ROOT # script to be executed every time the container starts COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process CMD ["rails", "server", "-b", "0.0.0.0"] ・curlコマンド=サーバから、もしくはサーバへデータ転送を行うコマンド docker-compose.ymlの編集 docker-compose.yml version: '3.7' services: db: image: mysql:8.0.20 volumes: - mysql:/var/lib/mysql:delegated ports: - '3307:3306' command: --default-authentication-plugin=mysql_native_password env_file: .env web: build: context: . dockerfile: Dockerfile command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" tty: true stdin_open: true env_file: .env depends_on: - db ports: - '3000:3000' volumes: - .:/app:cached - bundle:/usr/local/bundle:delegated - node_modules:/app/node_modules - tmp-data:/app/tmp/sockets volumes: mysql: bundle: node_modules: tmp-data: Gemfileの編集 Gemfile. source 'https://rubygems.org' gem 'rails', '6.1.3.1' 少なって感じだけど、 source 'https://rubygems.org'で大体必要なgem達は引っ張ってきてくれるみたいなので大丈夫。     .envファイルの編集 .envファイル=秘密鍵などを隠しておくためのファイルです。 env. MYSQL_ROOT_PASSWORD=password TZ=Japan entrypoint.shの編集 普通にdockerを立てると、pidsファイルになんらかの数字が書き込まれてしまってエラーの原因(この記事みたいな)になります。 なので、それを事前に防いでおくためのコードをこのentrypoint.shに記述しておきます。 entrypoint.sh #!/bin/bash set -e # Remove a potentially pre-existing server.pid for Rails. rm -f /myapp/tmp/pids/server.pid # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@"    STEP2. Docker上でrails new terminal. docker-compose run --rm web rails new . --force --no-deps --database=mysql --skip-turbolinks --skip-test docker-compose run --rm web bin/rails webpacker:install (↑のコマンドdocker-compose run --rm web rails new . --force --no-deps --database=mysql --skip-turbolinks --skip-test --webpackerだけでできる気がする) たくさんファイルができました! terminal. % ls Dockerfile config package.json Gemfile config.ru postcss.config.js Gemfile.lock db public README.md docker-compose.yml storage Rakefile entrypoint.sh tmp app lib vendor babel.config.js log yarn.lock bin node_modules STEP3. config/database.ymlを編集 ↓のpasswordなどは任意で登録。 config/database.yml default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV.fetch('MYSQL_USERNAME') { 'root' } %> password: <%= ENV.fetch('MYSQL_PASSWORD') { 'password' } %> host: <%= ENV.fetch('MYSQL_HOST') { 'db' } %> development: <<: *default database: rails_app_dev test: <<: *default database: rails_app_test production: <<: *default database: rails_app_prd username: app password: hoge ↑ここでusernameをappじゃなく、サービス名にしておくと吉。 Dockerイメージをビルドし、DB作成 docker-compose build docker-compose run web bin/rails db:create コンテナを起動 docker-compose up -d Your're on Rails!が出たら成功! 補足 docker上でRails開発をする時のコマンドたち terminal. $ docker-compose run web bundle exec rails コマンド モデルの作成 terminal. docker-compose run web bundle exec rails g model User コントローラの作成 terminal. docker-compose run web bundle exec rails g controller Homepages index terminal. docker-compose run web bundle exec rails g rspec:install Docker上でMySQLに接続する方法 参考記事: 【Docker×MySQL】Docker環境下でMySQLコンテナに接続する方法(テーブル情報を確認) docker psでdbコンテナの名前を確認。(※以下の場合は、上から2つめのコンテナのproject_file_db_1が名前) % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7de3cc82f8db project_file_web "entrypoint.sh bash …" 14 minutes ago Up 14 minutes 0.0.0.0:3000->3000/tcp project_file_web_1 026f77ef5f58 mysql:8.0.20 "docker-entrypoint.s…" 2 hours ago Up 2 hours 33060/tcp, 0.0.0.0:3307->3306/tcp project_file_db_1 以下のコマンドでMySQLコンテナに接続(project_file_db_1の所は各自のDBコンテナ名にしてください) 前述した % docker exec -it project_file_db_1 bash root@026f77ef5f58:/# 接続できたらMySQLにアクセス。 root@026f77ef5f58:/#mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) root@026f77ef5f58:/# 参考記事 【Dockerで環境構築】Rails 6 & MySQL 8 【Rails】Rails 6.0 x Docker x MySQLで環境構築
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む