DockerでRails + MySQLの環境を作る勉強をしています。
標記の件ですが、
- Railsで作成したWebアプリから日本語の文字をインサートする。
- MySQLにログインして実際にレコードを見てみると、「???」になっている。
- Webアプリの方で取得すると日本語は正常に表示されている
MySQLの文字コードがおかしいと予測しています。
いくつかのサイトを参考にして、Dockerをビルドする際に文字コードをUTF-8にしようと記載しておりますが、まだ不十分でしょうか?
(DockerfileはDocker公式のものをベースに、思考錯誤しているうちにいろいろ追記されてしまいましたが。。。)
よろしくお願いします。
# Dockerfile FROM ruby:2.4.0 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs locales RUN apt-get install -y imagemagick --fix-missing RUN rm rm -rf /var/lib/apt/lists/* RUN echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && locale-gen ja_JP.UTF-8 ENV LC_ALL ja_JP.UTF-8 RUN { \ echo '[mysqld]'; \ echo 'character-set-server=utf8mb4'; \ echo 'collation-server=utf8mb4_general_ci'; \ echo 'skip-character-set-client-handshake'; \ echo '[mysql]'; \ echo 'default-character-set=utf8'; \ echo '[client]'; \ echo 'default-character-set=utf8mb4'; \ } > /etc/mysql/conf.d/charset.cnf RUN mkdir /myapp WORKDIR /myapp ADD Gemfile /myapp/Gemfile ADD Gemfile.lock /myapp/Gemfile.lock RUN bundle install ADD . /myapp
yml
1# docker-compose 2version: '2' 3services: 4 db: 5 image: mysql 6 command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci 7 environment: 8 MYSQL_ROOT_PASSWORD: hogehoge 9 MYSQL_CHARSET: "utf8" 10 TZ: "Asia/Tokyo" 11 web: 12 build: . 13 command: ./bin/bundle exec rails s -p 3000 -b '0.0.0.0' 14 volumes: 15 - .:/myapp 16 ports: 17 - "3000:3000" 18 depends_on: 19 - db
あなたの回答
tips
プレビュー