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 VIMでqfreplaceを使ってリファクタリング
markdown rbenvで指定したバージョンの捆绑を使う