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

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

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

Q&A

解決済

2回答

513閲覧

docker内にrails + mysql環境を作っているのですがdbのcreateができません

MasakazuFukami

総合スコア1869

MySQL

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

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

0グッド

0クリップ

投稿2019/01/17 02:37

編集2019/01/17 03:13

お世話になっております。

現在dockerでタイトル取りの環境を作っているのですが db:create の段階でどうもエラーが出ていて起動ができない状況です。

エラー内容は以下のとおりです。

~/codes/project/hoge (master) -> 11:32 AM Thu Jan 17 $ docker-compose up Creating network "hoge_default" with the default driver Creating hoge-dev-mysql ... done Creating hoge-dev-rails ... done Attaching to hoge-dev-mysql, hoge-dev-rails hoge-dev-mysql | 2019-01-17 02:32:43 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). hoge-dev-mysql | 2019-01-17 02:32:43 0 [Note] mysqld (mysqld 5.6.42-log) starting as process 1 ... hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] Plugin 'FEDERATED' is disabled. hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Using atomics to ref count buffer pool pages hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: The InnoDB memory heap is disabled hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Memory barrier is not used hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Compressed tables use zlib 1.2.11 hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Using Linux native AIO hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Using CPU crc32 instructions hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Initializing buffer pool, size = 128.0M hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Completed initialization of buffer pool hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Highest supported file format is Barracuda. hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: 128 rollback segment(s) are active. hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: Waiting for purge to start hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] InnoDB: 5.6.42 started; log sequence number 1626007 hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] Server hostname (bind-address): '*'; port: 3306 hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] IPv6 is available. hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] - '::' resolves to '::'; hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] Server socket created on IP: '::'. hoge-dev-mysql | 2019-01-17 02:32:43 1 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] Event Scheduler: Loaded 0 events hoge-dev-mysql | 2019-01-17 02:32:43 1 [Note] mysqld: ready for connections. hoge-dev-mysql | Version: '5.6.42-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) hoge-dev-rails | == Installing dependencies == hoge-dev-rails | The Gemfile's dependencies are satisfied hoge-dev-rails | hoge-dev-rails | == Preparing database == hoge-dev-rails | rails aborted! hoge-dev-rails | LoadError: Error loading shared library libmysqlclient.so.18: No such file or directory (needed by /usr/local/bundle/gems/mysql2-0.4.9/lib/mysql2/mysql2.so) - /usr/local/bundle/gems/mysql2-0.4.9/lib/mysql2/mysql2.so hoge-dev-rails | /usr/local/bundle/gems/mysql2-0.4.9/lib/mysql2.rb:31:in `require' hoge-dev-rails | /usr/local/bundle/gems/mysql2-0.4.9/lib/mysql2.rb:31:in `<top (required)>' hoge-dev-rails | /root/hoge/config/application.rb:17:in `<top (required)>' hoge-dev-rails | /root/hoge/rakefile:4:in `require_relative' hoge-dev-rails | /root/hoge/rakefile:4:in `<top (required)>' hoge-dev-rails | /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands/rake/rake_command.rb:20:in `block in perform' hoge-dev-rails | /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands/rake/rake_command.rb:18:in `perform' hoge-dev-rails | /usr/local/bundle/gems/railties-5.1.4/lib/rails/command.rb:46:in `invoke' hoge-dev-rails | /usr/local/bundle/gems/railties-5.1.4/lib/rails/commands.rb:16:in `<top (required)>' hoge-dev-rails | /root/hoge/bin/rails:9:in `require' hoge-dev-rails | /root/hoge/bin/rails:9:in `<top (required)>' hoge-dev-rails | /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load' hoge-dev-rails | /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call' hoge-dev-rails | /usr/local/bundle/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call' hoge-dev-rails | /usr/local/bundle/gems/spring-2.0.2/lib/spring/client.rb:30:in `run' hoge-dev-rails | /usr/local/bundle/gems/spring-2.0.2/bin/spring:49:in `<top (required)>' hoge-dev-rails | /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load' hoge-dev-rails | /usr/local/bundle/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>' hoge-dev-rails | /root/hoge/bin/spring:15:in `<top (required)>' hoge-dev-rails | bin/rails:3:in `load' hoge-dev-rails | bin/rails:3:in `<main>' hoge-dev-rails | (See full trace by running task with --trace) hoge-dev-rails | hoge-dev-rails | == Command ["bin/rails db:create"] failed == hoge-dev-rails | !! exit status 1 hoge-dev-rails exited with code 1

この部分(LoadError: Error loading shared library libmysqlclient.so.18: No such file or directory (needed by /usr/local/bundle/gems/mysql2-0.4.9/lib/mysql2/mysql2.so) - /usr/local/bundle/gems/mysql2-0.4.9/lib/mysql2/mysql2.so)だということはわかるのですが、どうやって解決すればいいかわからず。。。

よろしくお願いいたします。。。

以下にDockerfileとdocker-compose.ymlを追記いたします。

Dockerfile.development

FROM starefossen/ruby-node:2-8-alpine AS build-env RUN mkdir -p /root/hoge WORKDIR /root/hoge RUN set -x \ && apk update \ && apk add --no-cache --virtual build-dependencies \ build-base \ mysql-dev \ git \ ca-certificates \ openssl ## tools ENV DOCKERIZE_VERSION=0.5.0 ENTRYKIT_VERSION=0.4.0 RUN wget https://github.com/jwilder/dockerize/releases/download/v$DOCKERIZE_VERSION/dockerize-alpine-linux-amd64-v$DOCKERIZE_VERSION.tar.gz \ && tar -xvzf dockerize-alpine-linux-amd64-v$DOCKERIZE_VERSION.tar.gz \ # entrykit && wget https://github.com/progrium/entrykit/releases/download/v${ENTRYKIT_VERSION}/entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz \ && tar -xvzf entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz \ ## install gems COPY Gemfile* ./ RUN echo 'gem: --no-rdoc --no-ri' >> /.gemrc \ && gem install bundler \ && bundle install -j 4 FROM ruby:2-alpine RUN mkdir -p /root/hoge WORKDIR /root/hoge COPY --from=build-env /usr/local/bundle /usr/local/bundle COPY --from=build-env /root/hoge/dockerize /usr/local/bin/ COPY --from=build-env /root/hoge/entrykit /usr/local/bin/ COPY --from=build-env /root/hoge/mc /usr/local/bin/ RUN chmod +x /usr/local/bin/entrykit \ && entrykit --symlink \ && chmod +x /usr/local/bin/mc \ && apk update \ && apk add --no-cache mariadb-client imagemagick git EXPOSE 80

docker-compose.yml

version: '2' services: rails: container_name: hoge-dev-rails build: context: . dockerfile: Dockerfile.development volumes: - .:/root/hoge ports: - 3000:3000 environment: DB_HOST: mysql DB_NAME: hoge_development DB_USER: root DB_PASSWORD: mysql-password entrypoint: - prehook - rm -f tmp/pids/server.pid - -- - prehook - bin/setup depends_on: - mysql tty: true stdin_open: true mysql: container_name: hoge-dev-mysql image: mysql:5.6 ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: mysql-password volumes: - ./mysql:/etc/mysql/conf.d - mysql_volume:/var/lib/mysql volumes: mysql_volume: driver: local

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazto

2019/01/17 03:06

Dockerfile、およびdocker-compose.ymlの内容を追記お願いします。
matsuand

2019/01/17 03:50

MySQL が入っていませんね。
MasakazuFukami

2019/01/17 03:53

@matsuand様 こちら、回答になりますでしょうか? Dockerfile.developmentに入っていないということであれば、mariadb-clientがその役割を担当しているとい認識でございます!分かりづらくてすいません!
guest

回答2

0

自己解決

rubyのverを明示的に指定することで解決できました!
FROM ruby:2.5.1-alpine3.7

投稿2019/02/14 02:11

MasakazuFukami

総合スコア1869

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Dockerfile内、

Dockerfile

1RUN set -x \ 2 && apk update \ 3 && apk add --no-cache --virtual build-dependencies \ 4 build-base \ 5 mysql-dev \ 6 git \ 7 ca-certificates \ 8 openssl

において、libmysqlclient-devが必要なのではないでしょうか。

投稿2019/01/17 04:10

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問