Я использую docker-compose для запуска локальной тестовой среды для веб-приложения rails. У меня эта настройка работает на другом компьютере, но я сталкиваюсь с проблемой на другом.
Здесь файл-докер записывается:
version: '2'
services:
railsdev:
build: ./
image: railsdev
depends_on:
- db
ports:
- 8080:8080
networks:
testing_net:
ipv4_address: 172.28.1.5
volumes:
- /c/Users/my_user/Documents/directory:/mount_dir
db:
build: ./mysql
image: mysqldev
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: db
networks:
testing_net:
ipv4_address: 172.28.1.3
networks:
testing_net:
ipam:
driver: default
config:
- subnet: 172.28.0.0/16
Я изменил некоторые из этих значений для обеспечения конфиденциальности.
И вот мой mysql DockerFile:
FROM mysql
ENV MYSQL_DATABASE=db
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_HOST=localhost
ENV MYSQL_PORT=3306
ENV MYSQL_USER=user
ENV MYSQL_PASSWORD=password
COPY transfer.sql /docker-entrypoint-initdb.d
EXPOSE 3306
CMD ["mysqld"]
И, наконец, мои рельсы DockerFile:
FROM ruby:2.3.3
WORKDIR ./
ENV DATABASE_URL=mysql2://172.28.1.3
ENV RAILS_ENV=development
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install
EXPOSE 8080
CMD ["sh", "-c", "cd mount_dir;bundle exec rake db:migrate;bundle exec rails s -b 0.0.0.0 -p8080"]
Как правило, я запускаю docker-compose --build для сборки и запуска этих контейнеров, и все правильно подключается. У меня есть рельсы DockerFile, настроенные для миграции базы данных, и громкость монтируется должным образом. Тем не менее, я получаю сообщение "Отказано в доступе" за "root'@'172.28.1.5". Обычно это означает, что пароль root неверен, но я подтвердил, что он правильный. Есть идеи?
есть вероятность, что пользовательский root mysql разрешает 127.0.0.1 - и вы не создали root для 172.28.1.5.