LoginSignup
0
0

More than 1 year has passed since last update.

DockerComposeをdevelopmentで実行する

Last updated at Posted at 2021-05-24

これまで、production環境で開発をしてきた。
Dockerを導入し、AWSでのデプロイを試みている。

しかしそれは、他の記事を参考に作っていた為、
意味もわからず、本番環境でやってきただけで、
必要な構成も理解していないので上手く進まなかった。

そこで、development環境に戻し、
まずはDockerの導入にフォーカスして理解度を高めていく。


各ファイルの修正

docker-compose.yml
services:
  local-redis:
    image: redis
    container_name:
      rails-redis
    container_name: rails-redis

  local-rails:
    build: .
@@ -15,9 +14,31 @@ services:
      - local-redis
    env_file:
      - env_file.env
    container_name:
      rails-rails
    container_name: rails-rails
    command:
      bundle exec rails s -b 0.0.0.0
      # bundle exec rails s -e production

    environment:
      RAILS_DATABASE_PASSWORD: blago18
      RAILS_DATABASE_HOST: db
      RAILS_DATABASE_USER: blago18
      RAILS_ENV: development
    volumes:
      - .:/var/www/footomo

  db:
    image: mysql
    volumes:
      - mysql-data:/var/lib/mysql
    # ports:
    # - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: MySQL8.0
      MYSQL_DATABASE: app_development
      MYSQL_USER: blago18
      MYSQL_PASSWORD: blago18
    command:
      - --default-authentication-plugin=mysql_native_password

volumes:
  mysql-data:

コンテナに入ってmigrationを実行

Kotaro18:footomo kotaro18$ docker-compose up --build
Creating network "footomo_default" with the default driver
Building local-rails
[+] Building 0.3s (16/16) FINISHED                                                                                                    
 => [internal] load build definition from Dockerfile                                                                             0.0s
 => => transferring dockerfile: 37B                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                0.0s
 => => transferring context: 2B                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/ruby:2.6.6                                                                    0.0s
 => [ 1/11] FROM docker.io/library/ruby:2.6.6                                                                                    0.0s
 => [internal] load build context                                                                                                0.1s
 => => transferring context: 24.44kB                                                                                             0.1s
 => CACHED [ 2/11] RUN curl -sL https://deb.nodesource.com/setup_11.x | bash -                                                   0.0s
 => CACHED [ 3/11] COPY ./ /var/www/footomo                                                                                      0.0s
 => CACHED [ 4/11] WORKDIR /var/www/footomo                                                                                      0.0s
 => CACHED [ 5/11] COPY Gemfile /var/www/footomo                                                                                 0.0s
 => CACHED [ 6/11] COPY Gemfile.lock /var/www/footomo                                                                            0.0s
 => CACHED [ 7/11] RUN apt-get update                                                                                            0.0s
 => CACHED [ 8/11] RUN apt-get upgrade -y                                                                                        0.0s
 => CACHED [ 9/11] RUN gem update bundler                                                                                        0.0s
 => CACHED [10/11] RUN apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev -y                                  0.0s
 => CACHED [11/11] RUN bundle install                                                                                            0.0s
 => exporting to image                                                                                                           0.0s
 => => exporting layers                                                                                                          0.0s
 => => writing image sha256:80be9ac03901063a087005abd6dda11a3649ae427b8362763ce3dac898f1c523                                     0.0s
 => => naming to docker.io/library/footomo_local-rails                                                                           0.0s
Successfully built 80be9ac03901063a087005abd6dda11a3649ae427b8362763ce3dac898f1c523
Creating rails-redis  ... done
Creating footomo_db_1 ... done
Creating rails-rails  ... done
Attaching to rails-redis, footomo_db_1, rails-rails
db_1           | 2021-04-07 23:35:44+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.23-1debian10 started.
db_1           | 2021-04-07 23:35:44+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
db_1           | 2021-04-07 23:35:44+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.23-1debian10 started.
db_1           | 2021-04-07T23:35:45.026977Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.23) starting as process 1
db_1           | 2021-04-07T23:35:45.041398Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
rails-redis    | 1:C 07 Apr 2021 23:35:44.073 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
rails-redis    | 1:C 07 Apr 2021 23:35:44.074 # Redis version=6.0.8, bits=64, commit=00000000, modified=0, pid=1, just started
rails-redis    | 1:C 07 Apr 2021 23:35:44.074 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
rails-redis    | 1:M 07 Apr 2021 23:35:44.105 * Running mode=standalone, port=6379.
rails-redis    | 1:M 07 Apr 2021 23:35:44.106 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
rails-redis    | 1:M 07 Apr 2021 23:35:44.106 # Server initialized
rails-redis    | 1:M 07 Apr 2021 23:35:44.112 * Ready to accept connections
db_1           | 2021-04-07T23:35:45.698289Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
db_1           | 2021-04-07T23:35:46.033480Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
db_1           | 2021-04-07T23:35:46.142287Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
db_1           | 2021-04-07T23:35:46.142734Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
db_1           | 2021-04-07T23:35:46.148257Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
db_1           | 2021-04-07T23:35:46.195505Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.23'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

ここで、初歩的なミスをしてしまいました。

一旦、Ctl+Cでキャンセルしてから、
同じターミナルでコンテナに入ろうとしたところ、
railsは既に立ち上がってますとのエラーが。

server.pidを削除したり、
他のターミナルで立ち上がってないかチェックしてました。

単純に、1つのターミナルでコンテナを立ち上げ、
もう1つのターミナルでコンテナに入ればいいだけでした。

Kotaro18:footomo kotaro18$ docker-compose exec local-rails bash
root@fc0180c62138:/var/www/footomo# 

そして、migrationを実行

Kotaro18:footomo kotaro18$ docker-compose exec local-rails bash
root@fc0180c62138:/var/www/footomo# rails db:migrate
== 20180217122153 CreateBoards: migrating =====================================
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- create_table(:boards, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0507s
== 20180217122153 CreateBoards: migrated (0.0511s) ============================

== 20180315233935 CreateComments: migrating ===================================
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- create_table(:comments, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.1153s
== 20180315233935 CreateComments: migrated (0.1230s) ==========================

== 20180324120737 CreateTags: migrating =======================================
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0002s
-- create_table(:tags, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0416s
== 20180324120737 CreateTags: migrated (0.0485s) ==============================

== 20180324120941 CreateBoardTagRelations: migrating ==========================
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0001s
-- adapter_name()
   -> 0.0000s
-- create_table(:board_tag_relations, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0912s
== 20180324120941 CreateBoardTagRelations: migrated (0.0963s) =================

== 20180506115954 CreateUsers: migrating ======================================
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- adapter_name()
   -> 0.0000s
-- create_table(:users, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0376s
-- add_index(:users, :name, {:unique=>true})
   -> 0.0656s
== 20180506115954 CreateUsers: migrated (0.1056s) =============================

== 20181128051946 AddBirthdayToUser: migrating ================================
-- add_column(:users, :birthday, :date, {})
   -> 0.0430s
== 20181128051946 AddBirthdayToUser: migrated (0.0452s) =======================

Dockerのコンテナに入り、
dbをmigrationできました。

引き続き、開発環境で
コンテナの適切な導入を実施していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0