Я застрял, пытаясь настроить тома Docker для обмена файлами между моим хостом и сделать возможным в моем контейнере использовать эти файлы.позвольте мне объяснить.
У меня есть приложение для работы с rails docker с puma в качестве веб-сервера, я хочу, чтобы puma могла просматривать и использовать файлы ssl .key и .crt, поэтому для этого проекта я тожеиспользуя docker-compose в «производственном режиме», но я не знаю, как заставить это работать.
Моя настройка такова:
- Сервер Ubuntu 18.04 для производства имеет sslфайлы внутри
/home/ubuntu/my_app_keys
, контейнеры тоже на моем хосте.
/ home / ubuntu / docker-compose.yml
version: '3'
services:
postgres:
image: postgres:10.5
environment:
POSTGRES_DB: my_app_production
env_file:
-~/production.env
redis:
image: redis:4.0.11
web:
image: my_app:latest
command: bundle exec rails server -p 3000 -b 'ssl://127.0.0.1:3000?key=/home/ubuntu/my_app_keys/server.key&cert=/home/ubuntu/my_app_keys/server.crt' -e production
ports:
- '3000:3000'
volumes:
- /home/ubuntu/my_app_keys
depends_on:
- postgres
- redis
env_file:
- ~/production.env
restart: always
sidekiq:
image: my_app_sidekiq:latest
command: bundle exec sidekiq -C config/sidekiq.yml
depends_on:
- postgres
- redis
env_file:
- ~/production.env
restart: always
так,как вы можете видеть: command: bundle exec rails server -p 3000 -b 'ssl://127.0.0.1:3000?key=/home/ubuntu/my_app_keys/server.key&cert=/home/ubuntu/my_app_keys/server.crt'
ищет ssl-файлы в / home / ubuntu / my_app_keys, когда я выполняю docker-compose up
puma не может найти ssl-файлы и выходит с помощью:
/usr/local/bundle/gems/puma-3.9.1/lib/puma/minissl.rb:180:in `key=': No such key file '/home/ubuntu/my_app_keys/server.key' (ArgumentError)
Я думаю, что этопоскольку key=/home/ubuntu/my_app_keys/server.key&cert=/home/ubuntu/my_app_keys/server.crt
указывают в контексте контейнера, но у меня есть сертификат и ключ в контексте моего хоста
, поэтому я включаю в docker compose volume для привязки файлов:
volumes:
- /home/ubuntu/my_app_keys
но без везения, та же ошибка.
В контексте контейнера мое приложение находится в каталоге /var/www/my_app
, поэтому я тЧтобы указать абсолютный путь (по какой-то причине я предполагал, что это потому, что файлы ssl не находились в той же директории, где мое приложение не могло быть совместно использовано), поэтому я добавляю как compose-file docs скажем:
volumes:
- /home/ubuntu/my_app_keys:/var/www/my_app
и изменение в файле компоновки:
command: bundle exec rails server -p 3000 -b 'ssl://127.0.0.1:3000?key=server.key&cert=server.crt' -e
при выполнении компоновки завершает работу моего веб-сервиса с ошибкой:
web | Could not locate Gemfile or .bundle/ directory
только так, чтоЗапущен веб-сервис (но нет файлов ssl):
volumes:
- /home/ubuntu/my_app_keys
, поэтому я не знаю, что делать сейчас.любая помощь?