Как настроить docker compose для правильного отображения портов?

Я использую docker и docker compose для запуска приложения clojure и узла вместе с postgres.

Проект содержится в следующей структуре папок.

project/
-- app/
-- -- Dockerfile
-- frontend/
-- -- /Dockerfile
-- docker-compose.yml

app/Dockerfile выглядит так...

FROM clojure:latest
COPY . /usr/src/app
WORKDIR /usr/src/app

EXPOSE 9000

CMD ["lein", "run", "migrate", "&&","lein", "run"]

frontend/Dockerfile выглядит так...

FROM node:5
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN npm install

EXPOSE 8080

CMD ["npm", "start"]

И, наконец, docker-compose.yml выглядит так...

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"

бэкэнд не работает по другой причине, но внешний интерфейс, похоже, работает успешно, при этом я не могу нажать localhost: 8080 и увидеть приложение. Что мне нужно сделать, чтобы это произошло?

Заранее спасибо.

Просто чтобы уточнить, выполняется команда docker-compose up


person Brad Cypert    schedule 12.06.2016    source источник
comment
Какую операционную систему ты используешь?   -  person Xiongbing Jin    schedule 12.06.2016
comment
В настоящее время я использую Mac OSX   -  person Brad Cypert    schedule 12.06.2016
comment
Если вы используете docker toolbox, вам нужен IP-адрес 192.168.99.100:8080. Это IP-адрес виртуальной машины docker toolbox по умолчанию.   -  person Xiongbing Jin    schedule 12.06.2016
comment
Если вы хотите использовать localhost, как в системе Linux, попробуйте бета-версию Docker для OS X.   -  person khattam    schedule 13.06.2016


Ответы (1)


С помощью boot2docker (на Mac или Windows) для доступа к любому порту из localhost вам необходимо настроить виртуальную машину VirtualBox, чтобы переадресовать этот порт с виртуальной машины на хост.

Ваши сопоставления портов верны, но вам все равно нужно сделать видимым для вашего хоста (Mac) тот порт, к которому вы хотите получить доступ с локального хоста (ваш Mac).

См., например, "Использование boot2docker для запуска Docker на Mac или Windows" из Эндрю Одеван:

введите здесь описание изображения

Таким образом, вам не нужно узнавать IP-адрес вашего компьютера.
(Что вы можете увидеть с помощью docker-machine ls, за которым следует docker-machine ip <name>).

person VonC    schedule 12.06.2016