Я довольно новичок в Docker, и у меня проблема с путем.
Мой текущий проект - приложение RoR, в котором csv-файлы загружаются в базу данных PostgreSQL и обрабатываются для предоставления пользователю информации.
Чтобы избежать повторяющихся задач, я создал и автоматический сбор CSV каждые несколько часов. Для этого пользователю необходимо указать путь к данным, таким как C: \ user \ mydocuments, а приложение сделает все остальное.
При запуске приложения без докера локально все работает нормально, но как только оно развернуто в контейнере, я не могу получить доступ к папкам на машине.
Socket.gethostname дает мне имя контейнера, и я думаю, что это проблема, но я не могу найти правильный способ выразить путь к папке.
Я провел небольшое исследование, но не смог найти подходящих ответов. У кого-нибудь было решение этой проблемы? Или я пытаюсь сделать что-то невозможное?
Edit:
docker-compose.yml
version: '3'
services:
db:
image: postgres:10
web:
build: ./
ports:
- "3000:3000"
depends_on:
- db
Dockerfile
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp
EXPOSE 3000
CMD ["bundle", "exec", "rails", "server", "-p", "3000", "-b", "0.0.0.0"]
auto_import.rb
path = 'C:/Users/Documents/*.csv'
all_files_in_folder = Dir[path]
length_folder = all_files_in_folder.length
all_files_in_folder.each do |file_selected|
...
end