使用Docker运行Rails和PostgreSQL
手順(截至2020年6月5日)※10分钟食谱
无论按照Docker官方说明的方式进行操作,都会出现错误…
因此我创建了这个。
虽然是为了我的备忘录目的,但请随意使用。
1:准备必要的文件
FROM ruby:2.6.5 #希望のバージョンでOK
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000 #localhost:3000で接続する設定
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
source 'https://rubygems.org'
gem 'rails', '~>5.2.4' #希望のバージョンでOK。
# 上記以外の主要gemは、この後自動で書き込まれる。
# 空ファイル
#!/bin/bash
set -e
# Remove a potentially pre-existing server.pid for Rails.
rm -f /myapp/tmp/pids/server.pid
# Then exec the container's main process (what's set as CMD in the Dockerfile).
exec "$@"
version: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
environment: #この行がDocker公式に載ってない。
- POSTGRES_PASSWORD=password #この行がDocker公式に載ってない。
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
2:进行项目构建
$ docker-compose run web rails new . --force --no-deps --database=postgresql
大约需要4分钟。
2:构建项目
$ docker-compose run web rails new . --force --no-deps --database=postgresql
需要大约4分钟时间。
3:权限变更
$ sudo chown -R $USER:$USER .
如果在Linux上运行Docker,创建的rails new文件将由root所有。这是因为容器以root用户身份运行所导致的。在这种情况下,请更改新文件的所有权。
4:为了更新Gemfile而重新构建
$ docker-compose build
需要大约1分钟来更新容器的Gemfile。
5:数据库的设置。
default: &default
adapter: postgresql
encoding: unicode
host: db
username: postgres
password: password #この行がDocker公式に載ってない。
pool: 5
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
6:为了更新容器而重新构建
$ docker-compose build
需要大约1分钟的时间。因为需要更新容器中的database.yml文件。
7:启动容器
$ docker-compose up
由于尚未创建数据库,因此在本地主机连接时会出现错误。
创建容器数据库
$ docker-compose run web rails db:create
可以从本地进行设置。
9:设定完成
备考:参考视频或网站
大島真沙羅(Masara Oshima)女士
※這是一個約15分鐘的簡短YouTube視頻。非常感謝!
Farstep先生
※还附有Dockerfile和docker-compose.yml的描述说明。非常易懂!
Docker官方网站
* 由于需要进行一些修正,只需执行上述1至8步骤,即可完成开发环境的构建。