Connexion Docker + rails + Vue.js refusée chez localhost

À propos de cet article

Cet article est publié pour rappeler que la résolution du problème a pris beaucoup de temps en raison d'une mauvaise compréhension de Docker. J'ai configuré le serveur avec foreman et essayé d'installer Vue.js dans Ruby on Rails, mais je n'ai pas pu me connecter à localhost: 5000 et il est resté bloqué.

Articles mentionnés lors de l'introduction de Vue.js

https://qiita.com/Moo_Moo_Farm/items/afacfe4349af6a106253

Fichiers associés dans cet article

FROM ruby:2.6

# install package to docker container
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev \
    && apt-get install apt-transport-https \
    && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
    && apt-get update && apt-get install -y yarn \
    && curl -sL https://deb.nodesource.com/setup_10.x | bash - \
    && apt-get install -y nodejs mariadb-client \
    && mkdir /vue_app

WORKDIR /vue_app
COPY Gemfile /vue_app/Gemfile
COPY Gemfile.lock /vue_app/Gemfile.lock

COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000

compose.yml


version: '3'
services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - '3320:3306'
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - mysql-data:/var/lib/mysql
  web:
    build: .
    command: bundle exec puma -C config/puma.rb
    environment:
      RAILS_ENV: development
    volumes:
      - .:/vue_app
      - bundle:/usr/local/bundle
      - /app/vendor
      - /app/log
      - /app/.git
    ports:
      - "3000:3000"
    depends_on:
      - db
    tty: true
    stdin_open: true
volumes:
  mysql-data:
    driver: local
  bundle:
    driver: local

Procfile.dev


web: bundle exec rails s
webpacker: ./bin/webpack-dev-server

bin/server


#!/bin/bash -i
bundle install
bundle exec foreman start -f Procfile.dev

Le problème qui s'est produit

https://qiita.com/Moo_Moo_Farm/items/afacfe4349af6a106253#-foreman%E3%81%AB%E3%82%88%E3%82%8B%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E8%A8%AD%E5%AE%9A Installez foreman de la même manière que l'URL de référence, défini de manière à ce que deux serveurs puissent être démarrés en même temps, exécutez docker-copmpose up et accédez à localhost: 5000 dans le navigateur comme suit A été affiché. ![Capture d'écran 2020-09-11 13.46.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653956/82f92359-31a0-cd5f-a330- e7e36d7c78d7.png)

Ce que j'ai fait

① Ajoutez -b 0.0.0.0 à Procfile.dev et exécutez docker-compose run --rm web bin / server

Procfile.dev


+ web: bundle exec rails s -b 0.0.0.0
- web: bundle exec rails s

② Spécification du numéro de port Foreman

Il semble que le numéro de port du contremaître soit défini sur 5000 par défaut, mais spécifiez à nouveau explicitement 5000.

bin/server


#!/bin/bash -i
bundle install
+ bundle exec foreman start -p 5000 -f Procfile.dev

③ J'ai oublié de changer le numéro de port Web de docker-compose.yml en premier lieu, alors changez le numéro de port et exécutez docker-compose run --rm web bin / server

docker-compose.yml


ports:
-    - "3000:3000"
+    - "5000:5000"

Cependant, il ne peut pas être résolu. .. ..

Cela l'a finalement résolu

https://docs.docker.jp/compose/reference/run.html Réussir le démarrage du serveur en spécifiant à nouveau le numéro de port avec une commande

docker-compose run -p 5000:5000 --rm web bin/server

Cependant, je ne comprends pas pourquoi vous ne pouvez pas vous connecter sauf si vous spécifiez explicitement le numéro de port. .. .. Je n'ai jamais utilisé une telle commande auparavant.

Recommended Posts

Connexion Docker + rails + Vue.js refusée chez localhost
Rails Docker-Partie 1-
Rails Docker ~ Partie 2 ~
Docker x Rails 6 (Mémo)
Localhost3000 ne démarre pas dans le développement Docker / Rails.
Présentation de Vue.js à Rails
[Rails 6] Ancrez les applications Rails existantes [Docker]
Exécuter des rails à chaque fois dans le docker
[Docker] Construction de l'environnement Rails 5.2 avec docker
[Docker] À utiliser à tout moment avec Docker + Rails