- 投稿日:2022-03-23T22:55:44+09:00
Docker公式mysqlコンテナで日本語入力を可能にする方法
何が起きたか? docker公式mysqlコンテナを使用していたのですが、添付画像のように mysqlコンテナ内に入って、bashで日本語入力してエンターを押すと 入力した日本語が消える問題が発生しました。 ※半角英数字は入力、実行ともに出来る。 原因 原因としては下記参考URLにもありますが、 ・databaseの文字コードが対応していない ・日本語環境を追加していない の二つでした。 参考URL↓ https://teratail.com/questions/268253 解決方法 まず、docker-compose.ymlしか定義していない場合は、 db用のDockerfileを作成する必要があります。 下記が実際に解決したDokcerfile定義になります。 省力している箇所もありますが各プロジェクトに合わせて、 随時修正して下さい。 docker-compose.yml db: image: mysql:8.0 container_name: sample ###### 省略 ###### # 以下追加 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # ここまで 続いてDockerfile FROM mysql:8.0 COPY my.cnf /etc/mysql/conf.d/my.cnf # 日本語環境を追加 RUN apt-get update && apt-get install -y locales \ && sed -i -e 's/# \(ja_JP.UTF-8\)/\1/' /etc/locale.gen \ && locale-gen \ && update-locale LANG=ja_JP.UTF-8 # ここまで ENV LC_ALL ja_JP.UTF-8 ENV TZ Asia/Tokyo ENV LANG=ja_JP.UTF-8 CMD ["mysqld"] EXPOSE 3306 以上の設定でdocker公式mysqlコンテナでも、 日本語が扱えるようになっているはずです! これでやっと日本語のinsertが実行できる。。。 今やDockerは必須スキルになりつつあるなぁ〜
- 投稿日:2022-03-23T22:55:44+09:00
Docker mysqlコンテナで日本語入力できない
何が起きたか? docker公式mysqlコンテナを使用していたのですが、添付画像のように mysqlコンテナ内に入って、bashで日本語入力してエンターを押すと 入力した日本語が消える問題が発生しました。 ※半角英数字は入力、実行ともに出来る。 原因 原因としては下記参考URLにもありますが、 ・databaseの文字コードが対応していない ・日本語環境を追加していない の二つでした。 参考URL↓ https://teratail.com/questions/268253 解決方法 まず、docker-compose.ymlしか定義していない場合は、 db用のDockerfileを作成する必要があります。 下記が実際に解決したDokcerfile定義になります。 省力している箇所もありますが各プロジェクトに合わせて、 随時修正して下さい。 docker-compose.yml db: image: mysql:8.0 container_name: sample ###### 省略 ###### # 以下追加 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # ここまで 続いてDockerfile FROM mysql:8.0 COPY my.cnf /etc/mysql/conf.d/my.cnf # 日本語環境を追加 RUN apt-get update && apt-get install -y locales \ && sed -i -e 's/# \(ja_JP.UTF-8\)/\1/' /etc/locale.gen \ && locale-gen \ && update-locale LANG=ja_JP.UTF-8 # ここまで ENV LC_ALL ja_JP.UTF-8 ENV TZ Asia/Tokyo ENV LANG=ja_JP.UTF-8 CMD ["mysqld"] EXPOSE 3306 以上の設定でdocker公式mysqlコンテナでも、 日本語が扱えるようになっているはずです! これでやっと日本語のinsertが実行できる。。。 今やDockerは必須スキルになりつつあるなぁ〜
- 投稿日:2022-03-23T22:44:14+09:00
Dockerで、Rails 6系とMySQL8の開発環境の構築(OS : mac)
Rails 6系とMySQL8 で開発環境を作る docker-compose upでrails serverを起動できるようにすること ホストのファイルシステムとコンテナのファイルシステムを同期させること 勉強中の初学者です。誤りなどのご指摘いただければ嬉しいです! 流れ 各種ファイルの作成 イメージのBuild rails new でアプリ作成 -> Gemfileが上書きされる 新しいGemfileでイメージの再ビルド database.yml の設定,DB生成 コンテナ起動&サーバ起動 確認 各種ファイル作成 下記を作成します。 dockerfile docker-compose.yml Gemfile Gemfile.lock $ mkdir docker_rail_mysql $ cd docker_rail_mysql dockerfile作成 FROM ruby:2.6 RUN apt-get update && apt-get install -y \ build-essential \ libpq-dev \ nodejs RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejs RUN npm install --global yarn WORKDIR /docker_rail_mysql COPY Gemfile Gemfile.lock /docker_rail_mysql/ RUN bundle install RUN rm -f tmp/pids/server.pid CMD ["rails","s","-b","0.0.0.0"] docker-compose.yml作成 docker-compose.yml version: '3' volumes: db-data: services: web: build: . ports: - '3000:3000' container_name: 'web' volumes: - '.:/docker_rail_mysql' tty: true stdin_open: true depends_on: - db db: image: mysql:8 container_name: 'db_mysql' volumes: - 'db-data:/var/lib/mysql' environment: - 'MYSQL_ROOT_PASSWORD=password' - 'TZ=Asia/Tokyo' ports: - 3306:3306 Gemfile作成 source 'https://rubygems.org' gem 'rails', '~>6' Gemfile.lockを作成 Gemfile.lockの内容はありません。 コマンド まずは、docker-composeで、imageとcontainerを作ります。 $ docker-compose run web bash コンテナー上でのコマンド rails newコマンドで、Gemfileは上書きされます。 $ rails new . -force --database=mysql --webpacker $ exit 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: docker_development test: <<: *default database: docker_test production: <<: *default database: docker_homework_production username: root password: <%= ENV['DOCKER_DATABASE_PASSWORD'] %> コマンド 貧弱なGemfileで作られた最初のimageは削除して、 新しいGemfileでもう1回buildしましょう。 $ docker-compose down $ docker-compose up --build -d $ docker-compose run web rails db:create $ docker-compose up host側のWEBブラウザで確認 http://localhost:3000/ host側のdocker-homeworkフォルダの内容をgithubにpushしておくと、 下記のコマンドで、どこでも同じ環境構築ができるようになります。 $ git clone -b [ブランチ名] https://github.com/〜 $ cd docker $ docker-compose run web rails db:create $ docker-compose up 最後に これで構築完了です。 かなり時間がかかりましたが、無数のエラーを出しながら、dockerにもっと慣れてきたと思います。 参考になったら嬉しいです。 参考にしたサイト https://qiita.com/nsy_13/items/9fbc929f173984c30b5d https://qiita.com/A-Kira/items/f401aea261693c395966 https://qiita.com/ape/items/885e97ed1978f972d266 https://zenn.dev/yuma_ito_bd/scraps/1adb89dfe0661c
- 投稿日:2022-03-23T09:28:20+09:00
DockerよりMySQLを使用する
Dockerを通じてMySQLを使⽤するための起動や使⽤方法について記録しました。 環境 macOS Big Sur 11.1 (Silicon m1 chip) Docker 20.10.6 事前準備 MySQL Workbench MySQL Workbench は、データベースアーキテクト、開発者、DBA のための統合ビジュアルツールです。(公式サイトより) インストールの仕方は主に二つあります: 公式サイトで提供されたインストーラにてインストールします。 macOSの場合は、homebrewでのインストールが可能です。 Docker環境でDBに接続する手順(MySQL) MySQLのイメージファイルをpullするには、MySQLのDocker Hubで使用したいバージョンのTagを指定します。 M1 Macを使っているので CPU アーキテクチャは ARM ですが、公式リファレンスにも、「Intel イメージの実行には、エミュレーションのもとで--platform linux/amd64をつけて実行することが必要です。 特に mysql イメージは ARM64 向けには利用できません。 これに対する当面の対処としては mariadb イメージを利用してください。」という記述があります。色々と調べたら、この記事により、platform を linux/x86_64 に指定することでミュレーションとして動作することが解りましたので、この方式で進めます。 $ docker pull --platform linux/x86_64 mysql:8 8: Pulling from library/mysql 15115158dd02: Pull complete d733f6778b18: Pull complete 1cc7a6c74a04: Pull complete c4364028a805: Pull complete 82887163f0f6: Pull complete 097bfae26e7a: Pull complete e1b044d6a24f: Pull complete cd2978bd4d12: Pull complete 28bce5cc1677: Pull complete 907b6d695760: Pull complete c5049403458b: Pull complete f360718d6f4e: Pull complete Digest: sha256:0eb33f0094ef5351639d9d9847c963ee9f22f5631cde046babd4ec239aaeaf06 Status: Downloaded newer image for mysql:8 docker.io/library/mysql:8 イメージがうまくpullされたか確認します。 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8 c1558761f285 3 days ago 519MB 作業用ディレクタリを作成します。 $ mkdir docker_mysql $ cd docker_mysql 先ほどpullしたMySQLイメージでコンテナを回すため、作業用ディレクタリに以下のYAMLファイル(docker-compose.yml)を作成ます。 # docker-compose.ymlのバージョン version: "3.8" # services以下にmysql8コンテナの設定を書く # services.mysql8.image: 使用するイメージ名称。 # services.mysql8.container_name: コンテナ名称。 # services.mysql8.platform: M1 Macで起動できるように linux/x86_64 を指定する。 # services.mysql8.volumes: マウント・パス # services.mysql8.environment: 環境変数 # services.mysql8.ports: 公開用のポート services: mysql8: image: mysql:8 container_name: mysql8 platform: linux/x86_64 volumes: - ~/mysql-docker-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 12345 MYSQL_DATABASE: mydb ports: - "3306:3306" services.environment.MYSQL_ROOT_PASSWORDは接続際に使用するパスワードです。 YAMLファイルを作成したら、docker-composeでコンテナーをYAMLファイルに書いてあった設定の通りに起動します。 $ docker-compose up -d Creating network "docker_mysql_default" with the default driver Creating mysql8 ... done コンテナーがうまく起動されたか確認します。以下の結果が表⽰されたらDocker環境のDBにの接続する準備は完了です。 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8583e916916e mysql:8 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql8 以下のコマンドでdocker-compose.ymlで設定したパスワードで接続し、MySQLモニターに⼊ります。 $ docker exec -it mysql8 mysql -u root -p Enter password: 12345 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.28 MySQL Community Server - GPL Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> これでDBへの接続が完了です。 MySQL workbenchの使用 コンテナーが起動されたら、MySQL Workbenchを起動し、ポート3306(YAMLファイルに設定したポート)に接続してください。MySQL Workbenchの起動画面が表示されます。 DB接続にはYAMLファイルに設定したパスワードを入力します。 OKをクリックしたら、MySQL Workbenchが使えます。 コンテナの停止、削除 コンテナを停止するときには以下のコマンドを入力します。 $ docker stop mysql8 コンテナを削除するには以下のコマンドを入力します。 $ docker rm mysql8 参考サイト一覧 https://phoenixnap.com/kb/mysql-docker-container https://matthung0807.blogspot.com/2020/08/docker-mysql.html
- 投稿日:2022-03-23T06:41:42+09:00
【チートシート】 SQLのコマンド一覧(データの並び替え)
指定したカラムの値を並び替えたデータを取得( ORDER BY ) db-sample SELECT 表示カラム名①, 表示カラム名②, ... FROM DB名.テーブル名 ORDER BY 指定カラム名① 並び替え条件①, 指定カラム名② 並び替え条件② ... ; 特定のデータを取得した後に指定したカラムの値を並び替えたデータを取得( WHERE + ORDER BY ) db-sample SELECT 表示カラム名①, 表示カラム名②, ... FROM DB名.テーブル名 WHERE 条件式 ORDER BY 指定カラム名① 並び替え条件①, 指定カラム名② 並び替え条件② ... ; ( ORDER BY )の記述方法 ■昇順 db-sample ORDER BY 指定カラム名 ASC 又は db-sample ORDER BY 指定カラム名 ■降順 db-sample ORDER BY 指定カラム名 DESC
- 投稿日:2022-03-23T06:41:42+09:00
データ並び替えのコマンド一覧【チートシート】(MySQL)
指定したカラムの値を並び替えたデータを取得( ORDER BY ) db-sample SELECT 表示カラム名①, 表示カラム名②, ... FROM DB名.テーブル名 ORDER BY 指定カラム名① 並び替え条件①, 指定カラム名② 並び替え条件② ... ; 特定のデータを取得した後に指定したカラムの値を並び替えたデータを取得( WHERE + ORDER BY ) db-sample SELECT 表示カラム名①, 表示カラム名②, ... FROM DB名.テーブル名 WHERE 条件式 ORDER BY 指定カラム名① 並び替え条件①, 指定カラム名② 並び替え条件② ... ; ( ORDER BY )の記述方法 ■昇順 db-sample ORDER BY 指定カラム名 ASC 又は db-sample ORDER BY 指定カラム名 ■降順 db-sample ORDER BY 指定カラム名 DESC