「イラスト図解式 この一冊で全部わかるサーバーの基本」を理解出来る所だけ読んだレベルの者です。
読んだだけで、だから必要なのか!といった理解はありません。
前回の質問で、dockerを使うにあたって、ホストとゲストの関係を意識しろとのご指摘を頂きましたので、それに従って下記のコマンドを打ったら、すんなりとデーターベースにマイケルを登録する事ができました。
しかし、よくよく考えて見ると、自分が起動したのはdocker内のアプリケーション&webサーバーであり、データーベースサーバーではありません。
なんでマイケルは、登録されたの?っと疑問に思い質問させて頂きました。
###疑問点
なぜ下記のコマンドでデーターベースに保存できるのですか?
データーベースのコンテナを起動させる必要性があるのでは?
linux
1workspace$ docker-compose run --rm web rails console 2Loading development environment (Rails 5.0.0.1) 3irb(main):002:0> User.new 4=> #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil> 5irb(main):003:0> User.create(name: "Michael Hartl", email: "mhartl@example.com",password: "foobar", password_confirmation: "foobar") 6 (0.6ms) BEGIN 7 User Exists (1.0ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER($1) LIMIT $2 [["email", "mhartl@example.com"], ["LIMIT", 1]] 8 SQL (0.8ms) INSERT INTO "users" ("name", "email", "created_at", "updated_at", "password_digest") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["name", "Michael Hartl"], ["email", "mhartl@example.com"], ["created_at", 2017-04-04 14:22:37 UTC], ["updated_at", 2017-04-04 14:22:37 UTC], ["password_digest", "$2a$10$sbk6FvQggm2GC8s/GStglOwf55soHk3jKxtW2HkEeXfAFbO6JoU7e"]] 9 (11.4ms) COMMIT 10=> #<User id: 1, name: "Michael Hartl", email: "mhartl@example.com", created_at: "2017-04-04 14:22:37", updated_at: "2017-04-04 14:22:37", password_digest: "$2a$10$sbk6FvQggm2GC8s/GStglOwf55soHk3jKxtW2HkEeXf..."> 11irb(main):004:0> exit 12
###前提
mac os:sierra
IDE : Rubymine(お試し)
linux
1**Dockerfile** 2FROM ruby:2.3.3 3RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs 4RUN mkdir /myapp 5WORKDIR /myapp 6ADD Gemfile /myapp/Gemfile 7ADD Gemfile.lock /myapp/Gemfile.lock 8RUN bundle install 9ADD . /myapp 10 11**Gemfile** 12source 'https://rubygems.org' 13gem 'rails', '5.0.0.1' 14 15**docker-compose.yml** 16version: '2' 17services: 18 db: 19 image: postgres 20 web: 21 build: . 22 command: bundle exec rails s -p 3000 -b '0.0.0.0' 23 volumes: 24 - .:/myapp 25 ports: 26 - "3000:3000" 27 depends_on: 28 - db 29 30**config/database.yml** 31development: &default 32 adapter: postgresql 33 encoding: unicode 34 database: myapp_development 35 pool: 5 36 username: postgres 37 password: 38 host: db 39 40test: 41 <<: *default 42 database: myapp_test 43 44workspace $ docker ps 45CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46337461c6d6fb workspace_web "rails console" 2 hours ago Up About an hour workspace_web_run_9 47cf9a7bfa1c63 postgres "docker-entrypoint..." 2 days ago Up About an hour 5432/tcp workspace_db_1
###考えた事等
run web で起動はアプリ&webサーバーであるが、その前がdocker-compose run なので、docker-compose.ymlが起動して自動的にpostgresに接続された。なので、docker-composeでアプリ&webサーバーを立ち上げれば、三層全てが立ち上がる?ですか?
よろしくお願いいたします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/05 12:14