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
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