¿Cómo configuro docker compose para exponer los puertos correctamente?
configuration docker-compose (1)
Con boot2docker (en Mac o Windows), para acceder a cualquier puerto desde
localhost
, debe configurar su VM VirtualBox para
reenviar
ese puerto desde la VM al host.
Sus asignaciones de puertos son correctas, pero aún necesita hacer visible para su host (Mac) el único puerto al que desea acceder desde localhost (su Mac).
Consulte, por ejemplo, " Uso de boot2docker para ejecutar Docker en una Mac o Windows " de Andrew Odewahn :
De esa manera, no tiene que averiguar cuál es la IP de su máquina.
(Lo que puede ver con
docker-machine ls
seguido de
docker-machine ip <name>
)
Estoy usando docker y docker compose para ejecutar una aplicación clojure y un nodo, junto con postgres.
El proyecto está contenido en la siguiente estructura de carpetas.
project/
-- app/
-- -- Dockerfile
-- frontend/
-- -- /Dockerfile
-- docker-compose.yml
La
app/Dockerfile
ve así ...
FROM clojure:latest
COPY . /usr/src/app
WORKDIR /usr/src/app
EXPOSE 9000
CMD ["lein", "run", "migrate", "&&","lein", "run"]
El
frontend/Dockerfile
ve así ...
FROM node:5
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN npm install
EXPOSE 8080
CMD ["npm", "start"]
Y, por último, el docker-compose.yml se parece a ...
frontend:
image: bradcypert/node
volumes:
- ./frontend:/usr/src/frontend
ports:
- "8080:8080"
backend:
image: bradcypert/clojure
volumes:
- ./app:/usr/src/backend
ports:
- "9000:9000"
links:
- postgres
postgres:
image: postgres
ports:
- "5432:5432"
el backend falla por un motivo diferente, pero la interfaz parece funcionar correctamente, dicho esto, no puedo acceder a localhost: 8080 y ver la aplicación. ¿Qué necesito hacer para que esto suceda?
Gracias por adelantado.
Solo para aclarar, el comando que se ejecuta es
docker-compose up