Dockerfile
FROM ruby:2.6.3
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /paper_scammer_docker
WORKDIR /paper_scammer_docker
COPY Gemfile /paper_scammer_docker/Gemfile
COPY Gemfile.lock /paper_scammer_docker/Gemfile.lock
RUN bundle install
COPY . /paper_scammer_docker
# 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
# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]
docker-compose.yml
version: '3'
services:
db:
image: postgres:10
ports:
- "5432:5432"
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/paper_scammer_docker
ports:
- "3000:3000"
links:
- "db:db"
depends_on:
- db
Я успешно могу создать образ с помощью следующей команды
docker-compose build
Если я это сделаюdocker-compose up
в корневом каталоге проекта мое приложение работает нормально, и я могу видеть два контейнера, один для моего приложения rails, а другой для postgres, когда я делаю docker container ls
.Я заметил, что изображение postgres загружается из библиотеки.
файл 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
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
host: db
username: postgres
password:
# user: gnpsllco_papaer
# password: sharma@123
development:
<<: *default
database: paper_scammer_development
# user: postgres
# password: sharma@123
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: paper_scammer_test
# user: postgres
# password: sharma@123
production:
<<: *default
database: gnpsllco_paper_scammer
Проблема
Я запускаю следующую команду, чтобы запустить Dockerконтейнер из образа моего приложения rails.
sudo docker run -p 3000:3000 paperscammer_web
контейнер postgres не запущен или отсутствует.
Я хочу понять, как этот dockerfile-compose обрабатывает это, когда я вращаю изображениеПриложение rails, которое говорит, что зависит от службы postgres, не должно ли оно также вращать контейнер postgres и устанавливать 'db' в качестве хоста для соединений.
, или же его нужно вращать вручную для postgres.
Я получаю следующую ошибку при запуске http://localhost:3000
could not translate host name "db" to address: Name or service not known
Я вижу, что контейнер postgres не работает.
Спасибо