2017-06-15 4 views
0

Ich habe eine einfache Rails App, die ein MongoDB-Backend hat. Ich verwende Docker Compose, um die Rails-App und MongoDB in separaten Containern auszuführen. Wenn ich den Standard-Schienen-Port verwende (der 3000 ist), läuft alles OK.Running Rails App im Docker Container mit nicht standardmäßigen Port

Wenn ich jedoch die Rails-Anwendung auf Port 8080 statt mit CMD ["rails", "s", "-p", "8080"] laufen, und setze Port 8080 mit EXPOSE 8080 in meinem Dockerfile, dann wieder aufzubauen und das Bild schieben, nur der MongoDB Behälter anläuft. Ich ändere auch die Ports in docker-compose.yml zu 8080:8080.

Wenn ich die Rails App ohne Docker auf Port 8080 (rails s -p 8080) läuft funktioniert es gut.

Warum läuft meine Rails-App nicht in einem Docker-Container, wenn Port 8080 verwendet wird, funktioniert aber bei Verwendung von Port 3000?

Dockerfile

FROM ruby:2.3.1 

EXPOSE 3000 

ADD . /code 
WORKDIR /code 
RUN bundle install 

CMD ["rails", "s"] 

Docker-compose.yml

version: '3' 
services: 
    web: 
    image: "<USERNAME>/<REPO>:<TAG_NAME>" 
    build: . 
    ports: 
     - "3000:3000" 
    volumes: 
     - .:/code 
    links: 
     - mongodb 
    environment: 
     - RAILS_ENV=development 
    mongodb: 
    image: "mongo:latest" 
    ports: 
    - "27017:27017" 
    volumes: 
     - .:/data 
    restart: always 
+0

8080: 8080 weist Docker an, 8080 im Container 8080 auf Ihrem lokalen Computer auszusetzen. Versuchen Sie es in 3000: 8080 zu ändern, an diesem Punkt wird 3000 von dem Hostcomputer mit 8080 auf dem Andockcontainer verbunden. – bkunzi01

Antwort

1

8080: 8080 Docker sagen zu belichten 8080 in dem Behälter 8080 auf dem lokalen Computer. Versuchen Sie, es auf 8080: 3000 zu ändern, und verbinden Sie dann 3000 vom Hostcomputer mit 8080 im Andockcontainer. Weitere Informationen finden Sie hier: https://www.ctl.io/developers/blog/post/docker-networking-rules/

+0

Ich denke, die Ports sind rückwärts. Ich habe versucht, die Ports in meinem 'docker-compose.yml' zu' 8080: 3000' zu ändern, und alles funktioniert. Kannst du das in deiner Antwort ändern und ich werde es akzeptieren? – grizzthedj

+0

Entschuldigung wurde von Telefon geschrieben! Prost – bkunzi01

+1

Keine Sorge - danke für die schnelle Antwort! – grizzthedj

Verwandte Themen