Docker + Rails + Vue.js Verbindung bei localhost abgelehnt

Über diesen Artikel

Dieser Artikel wurde veröffentlicht, um sich daran zu erinnern, dass die Lösung aufgrund des schlechten Verständnisses von Docker lange gedauert hat. Ich habe den Server mit foreman eingerichtet und versucht, Vue.js in Ruby on Rails zu installieren, aber ich konnte keine Verbindung zu localhost: 5000 herstellen und es blieb hängen.

Artikel, auf die bei der Einführung von Vue.js Bezug genommen wird

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

Verwandte Dateien in diesem Artikel

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

Das aufgetretene Problem

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 Installieren Sie "foreman" auf die gleiche Weise wie die Referenz-URL, stellen Sie ein, dass zwei Server gleichzeitig gestartet werden können, führen Sie "docker-copmpose up" aus und gehen Sie im Browser wie folgt zu "localhost: 5000" Wurde angezeigt. [Screenshot 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)

Was ich getan habe

① Fügen Sie -b 0.0.0.0 zu Procfile.dev hinzu und führen Sie docker-compose run --rm web bin / server aus

Procfile.dev


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

② Angabe der Foreman-Portnummer

Es scheint, dass die Portnummer des Vorarbeiters standardmäßig auf 5000 festgelegt ist, geben Sie jedoch erneut explizit 5000 an.

bin/server


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

③ Ich habe zunächst vergessen, die Webport-Nummer von docker-compose.yml zu ändern. Ändern Sie daher die Portnummer und führen Sie "docker-compose run --rm web bin / server" aus

docker-compose.yml


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

Es kann jedoch nicht gelöst werden. .. ..

Dies löste es schließlich

https://docs.docker.jp/compose/reference/run.html Es gelang, den Server zu starten, indem die Portnummer erneut mit einem Befehl angegeben wurde

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

Ich verstehe jedoch nicht, warum Sie keine Verbindung herstellen können, wenn Sie die Portnummer nicht explizit angeben. .. .. Ich habe noch nie einen solchen Befehl verwendet.

Recommended Posts

Docker + Rails + Vue.js Verbindung bei localhost abgelehnt
Rails Docker-Teil 1-
Rails Docker ~ Teil 2 ~
Docker x Rails 6 (Memo)
Localhost3000 wird in der Docker / Rails-Entwicklung nicht gestartet.
Einführung von Vue.js in Rails
[Rails 6] Dockerisieren Sie vorhandene Rails-Apps [Docker]
Führen Sie Rails immer im Docker aus
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
[Docker] Wird immer mit Docker + Rails verwendet