Прайлс на докере не работает
Я попробовал подход с tty: true stdin_open: true
внутри docker-compose.yml
и прикрепление к идентификатору контейнера (см. http://www.chris-kelly.net/2016/07/25/debugging-rails-with-pry-within-a-docker-container/), но он просто зависает.
Я тоже пробовал docker-compose run --service-ports web
после этой статьи https://blog.carbonfive.com/2015/03/17/docker-rails-docker-compose-together-in-your-development-workflow/ но запрос также зависает, когда binding.pry
Мог supervisord
повлиять на это?
Вот Dockerfile:
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev supervisor
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - && apt-get install -yq nodejs
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install yarn
RUN mkdir /example
WORKDIR /example
COPY Gemfile /example/Gemfile
COPY Gemfile.lock /example/Gemfile.lock
RUN bundle install
COPY . /example
COPY docker/supervisor.conf /etc/supervisor/conf.d/example.conf
RUN cd client-app && npm install
CMD supervisord -n
И docker-compose.yml
:
version: '3'
services:
db:
image: postgres
web:
build: .
environment:
API_HOST: http://localhost:3000/api
volumes:
- .:/example
ports:
- "3000:3000"
- "4200:4200"
depends_on:
- db
И supervisor.conf
:
[program:rails]
directory=/example
command=rails server -b 0.0.0.0 -p 3000
autostart=true
autorestart=true
[program:npm]
directory=/example
command=/bin/bash -c "yarn && cd client-app && npm run docker-start"
autostart=true
autorestart=true
1 ответ
(если вы используете Postgres что-то вроде docker run -d --name=postgres ...
)
Я бы бросил сочинять и пытаться
docker build -t web .
docker run --link postgres:db -it -p 3000:3000 -p 4200:4200 web
Если это не удастся, я бы поносил и
docker run --link postgres:db -it -p 3000:3000 -p 4200:4200 web bash
Тогда попробуйте запустить rails s
, rails c
и т. д. вручную в контейнере.