Я пытаюсь запустить свое простое приложение на Ruby в контейнере Docker (я пользователь Windows 10). Это просто набор сценариев Ruby и bash, которые работают с базой данных Mongo. Я использую docker-compose
, чтобы составить 3 контейнера - один для базы данных mongo (используя официальный образ mongo), один для моего приложения и один для заполнения базы данных.
Затем я запускаю команды docker-compose build
и docker-compose up
. Mongo просыпается нормально и принимает импорт данных. Затем я открываю другое окно Powershell и запускаю docker run -it <name> /bin/bash
, чтобы получить интерактивную оболочку и запустить мой скрипт. К сожалению, по какой-то причине они не могут подключиться к Монго.
Моя строка подключения выглядит следующим образом:
@client = Mongo::Client.new([ 'mongodb:27017' ], :database => 'test')
Я пробовал разные версии, например mongodb
, mongodb://mongodb:27017
, mongodb://mongo:27017'
, но, похоже, ничего не работает. Когда я запускаю свой скрипт, он запускается в течение нескольких секунд, а затем выдает ошибку в первой строке, где я выполняю любую операцию над базой данных. Mongo не показывает никаких попыток подключения.
Что я делаю не так?
Dockerfile
FROM ruby:2.5
WORKDIR /usr/src/app
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
Dockerfile с моносемями
FROM mongo
COPY test.csv /test.csv
CMD mongoimport --host mongodb -d test -c places --type csv --file /test.csv --headerline
докер-compose.yml
version: '3'
services:
mongodb:
container_name: mongodb
image: mongo:latest
volumes:
- mongodata:/data/db
ports:
- 27017:27017
web:
build: .
volumes:
- .:/myapp
ports:
- "3000:3000"
links:
- mongodb
depends_on:
- mongodb
tty: true
mongo-seed:
build: ./mongo-seed
links:
- mongodb
volumes:
mongodata: