前提
Docker + Rails + Puma + Nginx + MySQLというQiitaの記事を参考に、AWSのEC2上で、dockerコンテナを作成しています。
分からないこと
docker-compose exec app rails db:create
を実行し、Railsアプリから、DBの作成を行うコマンドをEC2上から実行するのですが、ここで以下のエラーが検出されました。この原因がわかりません。
bash
1$ docker-compose exec app rails db:create 2Access denied for user 'root'@'172.19.0.3' (using password: YES) 3Couldn't create 'webapp_development' database. Please check your configuration. 4rails aborted!
わかっていること
EC2上から、DBへの接続は可能です。以下のコマンドを使用し、MySQLユーザ、rootm権限を持つMySQLユーザの両者で、ログインができました。
Bash
1$ docker-compose exec db mysql -u user_name -p 2mysql > 3 4$ docker-compose exec db mysql -u root -p 5mysql >
少し気になっていること
正しいかわかりませんが、 docker-compose run
を実行した際に、Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/
と出力されたことが少し気になっています。これが原因でしょうか。
不慣れなもので、yarnをdocker上のコンテナであとからinstallする場合、どのように指示すればよいのかわかっていません。
環境情報
dockercompose
1version: '3' 2services: 3 app: 4 build: 5 context: . 6 env_file: 7 - ./environments/db.env 8 command: bundle exec puma -C config/puma.rb 9 volumes: 10 - .:/webapp 11 - public-data:/webapp/public 12 - tmp-data:/webapp/tmp 13 - log-data:/webapp/log 14 depends_on: 15 - db 16 db: 17 image: mysql:5.7.28 18 env_file: 19 - ./environments/db.env 20 volumes: 21 - db-data:/var/lib/mysql 22 web: 23 build: 24 context: containers/nginx 25 volumes: 26 - public-data:/webapp/public 27 - tmp-data:/webapp/tmp 28 ports: 29 - 80:80 30 depends_on: 31 - app 32volumes: 33 public-data: 34 tmp-data: 35 log-data: 36 db-data:
以下はRails用のDockerfileです。
RailsDockerfile
1FROM ruby:2.7.1 2 3RUN apt-get update -qq && \ 4 apt-get install -y build-essential \ 5 apt-utils \ 6 nodejs 7 8RUN mkdir /webapp 9WORKDIR /webapp 10 11ADD Gemfile /webapp/Gemfile 12ADD Gemfile.lock /webapp/Gemfile.lock 13 14RUN bundle install 15 16ADD . /webapp 17 18RUN mkdir -p tmp/sockets
以下は、Nginx用のDockerfileです。
NginxDockerfile
1FROM nginx:1.15.8 2 3RUN rm -f /etc/nginx/conf.d/* 4 5ADD nginx.conf /etc/nginx/conf.d/webapp.conf 6 7CMD /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
nginxCONF
1server { 2 listen 80; 3 server_name xx.xx.xx.xx; # EC2のElastic IPを指定 4 5 access_log /var/log/nginx/access.log; 6 error_log /var/log/nginx/error.log; 7 8 root /webapp/public; 9 10 client_max_body_size 100m; 11 error_page 404 /404.html; 12 error_page 505 502 503 504 /500.html; 13 try_files $uri/index.html $uri @webapp; 14 keepalive_timeout 5; 15 16 location @webapp { 17 proxy_set_header X-Real-IP $remote_addr; 18 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 19 proxy_set_header Host $http_host; 20 proxy_pass http://webapp; 21 } 22}
以下、わかりやすくするため、拡張子を大文字にしました。
pumaRRB
1threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i 2threads threads_count, threads_count 3port ENV.fetch("PORT") { 3000 } 4environment ENV.fetch("RAILS_ENV") { "development" } 5plugin :tmp_restart 6 7app_root = File.expand_path("../..", __FILE__) 8bind "unix://#{app_root}/tmp/sockets/puma.sock"
databaseYML
1default: &default 2 adapter: mysql2 3 encoding: utf8 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 username: <%= ENV.fetch('user_name') { 'root' } %> 6 password: <%= ENV.fetch('user_password') { 'password' } %> 7 host: db 8 9development: 10 <<: *default 11 database: webapp_development 12 13test: 14 <<: *default 15 database: webapp_test
dbenv
1MYSQL_ROOT_PASSWORD=db_root_password 2MYSQL_USER=user_name 3MYSQL_PASSWORD=user_password
dockerコンテナの起動状況は以下です。
Bash
1$ docker-compose ps 2 Name Command State Ports 3--------------------------------------------------------------------------- 4webapp_app_1 bundle exec puma -C config ... Up 5webapp_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp 6webapp_web_1 /bin/sh -c /usr/sbin/nginx ... Up 0.0.0.0:80->80/tcp
dockerイメージは以下です。
Bash
1$ docker-compose images 2webapp_app_1 webapp_app latest 361f62018f81 1.03 GB 3webapp_db_1 mysql 5.7.28 db39680b63ac 416 MB 4webapp_web_1 webapp_web latest aa805b0e3401 121 MB
その他
- OS: Amazon linux 2
- Rails: 6.0.2.2
- Ruby:2.7.1
- MySQL: 5.7.28
- Nginx: 1.15.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/04 02:21