【发布时间】:2017-11-22 13:10:23
【问题描述】:
您好,我正在尝试使我的应用程序适应 docker。
我的应用堆栈是
- Ruby 2.4.0
- Rails 5.0.1
- Postgres 9.5.8
我创建了一个Dockerfile 来创建my-app 的图像
FROM ruby:2.4
RUN apt-get update && apt-get install -y \
software-properties-common \
python-software-properties \
build-essential \
libpq-dev \
libxml2-dev libxslt1-dev \
libqt4-webkit libqt4-dev xvfb \
nodejs \
postgresql
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY Gemfile /usr/src/app
COPY Gemfile.lock /usr/src/app
RUN bundle install
ADD . /usr/src/app
COPY ./docker/docker-entrypoint.sh /usr/src/app/docker-entrypoint.sh
RUN chmod +x /usr/src/app/docker-entrypoint.sh
RUN bundle install
然后我创建了一个docker-compose.yml
version: '3'
services:
app:
image: app_rails
entrypoint: ['/usr/src/app/docker-entrypoint.sh']
ports:
- "3000:3000"
depends_on:
- postgres
links:
- postgres
volumes:
- .:/usr/src/app
environment:
DATABASE_URL: postgres://postgres@postgres@postgres:5432/postgres?pool=5&encoding=utf-8
postgres:
image: postgres:9.5.8
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
这里是脚本docker-entrypoint.sh
#!/bin/sh
set -e
host="$1"
echo "host: ${host}"
if [ "$#" -gt 0 ]; then shift; fi
until psql -h "$host" -U "postgres" -c '\q'; do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
rails db:create
rails db:migrate RAILS_ENV=development
bundle exec rails server -b 0.0.0.0
exec "$@"
还有我的database.yml
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: postgresql
pool: 5
timeout: 5000
development:
adapter: postgresql
database: app_development
pool: 5
timeout: 5000
url: postgres://postgres@postgres/postgres:5432
test:
adapter: postgresql
database: app_test
pool: 5
timeout: 5000
production:
adapter: postgresql
database: app_production
pool: 5
timeout: 5000
我在运行脚本时遇到问题
web_1 | connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
web_1 | Postgres is unavailable - sleeping
由于我是 docker 新手,欢迎提出建议
【问题讨论】:
标签: ruby-on-rails docker docker-compose dockerfile