DockerでRailsを動かす その4
実現したいこと
AWS Fargateを使って,クラウド上でRailsのコンテナを起動させてみたいと想います.
前回までの戦いはこちら
https://ktaka.hatenablog.com/entry/2018/11/12/002519
今回は,心機一転新しいサンプルアプリを上げてみます.
やったこと
railsのサンプルを拾ってきて,実行してみます
new: echo "$$_gemfile" > Gemfile touch Gemfile.lock docker-compose run web rails new . --force --database=mysql --skip-bundle --skip-javascript sudo chown -R $$USER:$$USER . echo "$$_database_yml" > config/database.yml docker-compose build docker-compose run web rails generate controller welcome index docker-compose run web sh -c 'sleep 10 && rake db:create' sudo chown -R $$USER:$$USER . run: docker-compose up --build define _gemfile source 'https://rubygems.org' gem 'rails', '~> 5' endef export _gemfile define _database_yml default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: host: db development: <<: *default database: myapp_development test: <<: *default database: myapp_test production: <<: *default url: <%= ENV['DATABASE_URL'] %> endef export _database_yml ~
docker-compose.yml
version: '2' services: db: image: mysql environment: MYSQL_ROOT_PASSWORD: '' MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' web: image: ${APP_NAME} build: . volumes: - .:/myapp ports: - "8080:3000" environment: PORT: "3000" depends_on: - db
Dockerfile
FROM ruby:2.4-alpine RUN apk add -U mariadb-client-libs tzdata RUN mkdir /myapp WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN apk add -U build-base ruby-dev mariadb-dev --virtual .build-deps \ && bundle install -j 4 \ && gem sources --clear-all \ && apk del .build-deps \ && rm -rf /var/cache/apk/* \ /root/.gem/ruby/2.4.0/cache/*.gem COPY . /myapp CMD exec bundle exec rails s -p ${PORT} -b '0.0.0.0'FROM ruby:2.4-alpine RUN apk add -U mariadb-client-libs tzdata RUN mkdir /myapp WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN apk add -U build-base ruby-dev mariadb-dev --virtual .build-deps \ && bundle install -j 4 \ && gem sources --clear-all \ && apk del .build-deps \ && rm -rf /var/cache/apk/* \ /root/.gem/ruby/2.4.0/cache/*.gem COPY . /myapp CMD exec bundle exec rails s -p ${PORT} -b '0.0.0.0'
さて,とりあえずローカルで動かそうか...と思いきや...
$ APP_NAME=rails make new .... RROR: unsatisfiable constraints: mariadb-client-libs (missing): required by: world[mariadb-client-libs] ERROR: Service 'web' failed to build: The command '/bin/sh -c apk add-U mariadb-client-libs tzdata' returned a non-zero code: 1 make: *** [new] Error 1
あらら,エラーですよ.今度は何だ.そろそろECSに行かせてくれ
更新かなーとか思ったけど,apk addのときに -Uオプションはちゃんとついているし.
ググってもいい感じの解決方法がわからないので,この手法は諦めます.Postgreがいいし.
今日はこの辺にして,また明日以降がんばります.
参考
以下の記事を参考にさせていただきました.
AWS FargateでRuby on Railsを動かしてみる - Qiita
Alpineでパッケージをインストールしようとしたらエラーがでたので解消する - TOEIC940点の文系プログラマー
本記事について
本記事は,学習を目的に書かれています.
間違い,改良案などございましたら,コメントしていただけると幸いです.
基本的に編集途中ですので,何を書いてほしいかもコメントいただけると,
その情報を中心に追記します.