markdown docker-composeを使ってrails new

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown docker-composeを使ってrails new相关的知识,希望对你有一定的参考价值。

***すでに存在しているプロジェクトは`build`から始める。

```
$ mkdir docker-rails
$ cd docker-rails
```

# Dockerfile, docker-compose.yml, Gemfile, Gemfile.lock

## Dockerfile

```
FROM ruby:2.5
ENV LANG C.UTF-8

RUN apt-get update -qq && apt-get install -y \
    build-essential \
    nodejs \
 && rm -rf /var/lib/apt/lists/*

RUN gem install bundler --version=1.3.0

WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install

ENV APP_HOME /myapp
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME
```

## docker-compose.yml

```yml
version: '3'

services:
  web:
    build: .
    ports:
      - "3000:3000"
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
        #- bundle:/usr/local/bundle
    depends_on:
      - db
  db:
    image: mysql:5.7
    environment:
      #MYSQL_ROOT_PASSWORD: password
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes" # パスワードなしにしたい場合はこれ
    ports:
      - '3306:3306'

volumes:
  bundle:
  mysql_data:
```

## Gemfile

いつも通り以下のコマンドで作成し、railsを有効に

```
$ bundle init
```

```
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails"
```

## Gemfile.lock

空で作成

```
touch Gemfile.lock
```

# rails new

以下を事項することでイメージを作成し、コンテナ内で`rails new`をする。

```
$ docker-compose run web rails new . --force --database=mysql
```

ローカルにもアプリケーションが実装されている。

```
ll
total 72
-rw-r--r--   1 imajo  staff   348  3 24 15:30 Dockerfile
-rw-r--r--   1 imajo  staff  2230  3 24 15:42 Gemfile
-rw-r--r--   1 imajo  staff  5450  3 24 15:42 Gemfile.lock
-rw-r--r--   1 imajo  staff   374  3 24 15:42 README.md
-rw-r--r--   1 imajo  staff   227  3 24 15:42 Rakefile
drwxr-xr-x  10 imajo  staff   320  3 24 15:42 app
drwxr-xr-x   9 imajo  staff   288  3 24 15:42 bin
drwxr-xr-x  16 imajo  staff   512  3 24 15:42 config
-rw-r--r--   1 imajo  staff   130  3 24 15:42 config.ru
drwxr-xr-x   3 imajo  staff    96  3 24 15:42 db
-rw-r--r--@  1 imajo  staff   459  3 24 15:27 docker-compose.yml
drwxr-xr-x   4 imajo  staff   128  3 24 15:42 lib
drwxr-xr-x   3 imajo  staff    96  3 24 15:42 log
-rw-r--r--   1 imajo  staff    63  3 24 15:42 package.json
drwxr-xr-x   9 imajo  staff   288  3 24 15:42 public
drwxr-xr-x   3 imajo  staff    96  3 24 15:42 storage
drwxr-xr-x  11 imajo  staff   352  3 24 15:42 test
drwxr-xr-x   5 imajo  staff   160  3 24 15:42 tmp
drwxr-xr-x   3 imajo  staff    96  3 24 15:42 vendor
```

mysqlのコンテナが立ち上がっている。

```
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
09a156c3fa26        mysql:5.7           "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   docker-rails2_db_1
```

# database.yml

```
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  #password: password
  host: db
```

# ビルド

```
$ docker-compose build web
```

## DB作成

```
docker-compose run web bundle exec rails db:create
```

## コンテナ起動

```
$ docker-compose up -d
```

## コンテナ停止

```
$ docker-compose down
```

以上是关于markdown docker-composeを使ってrails new的主要内容,如果未能解决你的问题,请参考以下文章

markdown node.js中で导入/导出を使う

markdown 动的な文字列リソースを使う

markdown VIMでqfreplaceを使ってリファクタリング

markdown rbenvで指定したバージョンの捆绑を使う

markdown pyenvでmatplotlib.pyplotを使おうとするとエラー

markdown 地图オブジェクトを使ったもぐらたたき