pen*_*man 5 ruby-on-rails docker-compose
我在 Ruby on Rails 上使用 docker-compose 并遇到了麻烦。
在 docker-compose 中,我使用command并直接foreman.
当通过 Ctrl-c 停止 docker-compose 并通过 重新启动时docker-compose up,Rails 会导致错误A server is already running. Check /www/tmp/pids/server.pid.。
当然,我知道rm tmp/pids/server.pid这是解决方案之一,但是每次这样都很麻烦。
所以,我想要解决这种情况。
我写了Procfile和docker-compose.yml以及Dockerfile(供参考)
过程文件.dev:
app: bundle exec rails s -b 0.0.0.0 -p 3000
webpacker: bin/webpack-dev-server
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:
version: '3'
services:
web:
build:
context: .
dockerfile: Dockerfile.dev
command: "bundle exec foreman start -f Procfile.dev"
volumes:
- .:/www
ports:
- "3000:3000"
environment:
- DATABASE_HOST=db
- DATABASE_USERNAME=postgres
- DATABASE_PASSWORD=""
- DATABASE_PORT=5432
depends_on:
- db
tty: true
stdin_open: true
db:
image: postgres:9.6-alpine
volumes:
- postgresql-webapp-data:/var/lib/postgresql
volumes:
postgresql-webapp-data:
Run Code Online (Sandbox Code Playgroud)
Dockerfile.dev:
FROM ruby:2.4.3-alpine
ENV LANG C.UTF-8
ENV ROOT_PATH /www
RUN apk update && apk upgrade && apk add --update --no-cache alpine-sdk tzdata postgresql-dev nodejs postgresql-client curl && curl -o- -L https://yarnpkg.com/install.sh | sh
ENV PATH /root/.yarn/bin:$PATH
RUN mkdir $ROOT_PATH
WORKDIR $ROOT_PATH
ARG BUNDLE_OPTIONS
ADD Gemfile $ROOT_PATH/Gemfile
ADD Gemfile.lock $ROOT_PATH/Gemfile.lock
RUN bundle install --path vendor/bundle -j4 ${BUNDLE_OPTIONS}
ADD . $ROOT_PATH
RUN yarn install
EXPOSE 3000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1396 次 |
| 最近记录: |