services: db: image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: www_development ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-ppassword"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 web: build: context: . args: BUNDLE_GEMFILE: ${BUNDLE_GEMFILE:-Gemfile} command: bundle exec rails server -b 0.0.0.0 volumes: - .:/rails - bundle_cache:/usr/local/bundle ports: - "3000:3000" environment: DATABASE_HOST: db DATABASE_USERNAME: root DATABASE_PASSWORD: password REDIS_URL: redis://redis:6379/0 BUNDLE_GEMFILE: ${BUNDLE_GEMFILE:-Gemfile} SKIP_DB_SETUP: ${SKIP_DB_SETUP:-false} depends_on: db: condition: service_healthy redis: condition: service_healthy stdin_open: true tty: true volumes: mysql_data: redis_data: bundle_cache: