Я использую docker compose, который состоит из веб-работника, базы данных postgres и работника redis sidekiq. Я создал фоновое задание для обработки изображений после загрузки пользовательских изображений. ActiveStorage используется для хранения изображений. Обычно без докера, при локальной разработке изображения хранятся во временной папке хранения для имитации облачного хранилища. Я довольно новичок в Docker, поэтому я не уверен, как работает хранилище. Я считаю, что хранилище в Docker работает немного по-другому. Работник sidekiq выглядит нормально, похоже, он жалуется, что не может найти место для хранения изображений. Ниже приведена ошибка, которую я получаю от работника sidekiq.
WARN: Errno::ENOENT: No such file or directory @ rb_sysopen - /myapp/storage
А вот мой докер-compose.yml
version: '3'
services:
setup:
build: .
depends_on:
- postgres
environment:
- RAILS_ENV=development
command: "bin/rails db:migrate"
postgres:
image: postgres:10-alpine
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=mysecurepass
- POSTGRES_DB=myapp_development
- PGDATA=/var/lib/postgresql/data
postgres_data:
image: postgres:10-alpine
volumes:
- /var/lib/postgresql/data
command: /bin/true
sidekiq:
build: .
environment:
- REDIS_URL=redis://redis:6379
depends_on:
- redis
command: "bin/bundle exec sidekiq -C config/sidekiq.yml"
redis:
image: redis:4-alpine
ports:
- "6379:6379"
web:
build: .
depends_on:
- redis
- postgres
- setup
command: bundle exec rails s -p 3000 -b '0.0.0.0'
environment:
- REDIS_URL=redis://localhost:6379
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- postgres