Подключитесь к удаленной базе данных, которая находится в Docker через Mac OS X - PullRequest
0 голосов
/ 16 апреля 2019

Я на Mac OS X , и у меня есть docker-compose.yml

version: '3'
services:
  portalmodules:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8010:8000
    links:
      - database
  database:
    image: postgres:11.2
    expose:
      - "5432"
    environment:
      - "POSTGRES_PASSWORD=12345"
      - "POSTGRES_USER=john"
      - "POSTGRES_DB=api"

У меня также есть Dockerfile

FROM composer:1.8.5 as build_stage

COPY . /src
WORKDIR /src
RUN composer install


FROM alpine:3.8
RUN apk --no-cache add \
php7 \
php7-mbstring \
php7-session \
php7-openssl \
php7-tokenizer \
php7-json \
php7-pdo \
php7-pdo_pgsql \
php7-pgsql
COPY --from=build_stage /src  /src
RUN ls -al
RUN set -x \
addgroup -g 82 -S www-data \
adduser -u 82 -D -S -G www-data www-data
WORKDIR /src
RUN ls -al
RUN chmod -R 777 storage
CMD php artisan serve --host=0.0.0.0

Контейнер, похоже, успешно создает и запускает , когда я запускаю docker-compose up.

Но когда я пытался подключиться к базе данных:

  • IP: localhost
  • Порт: 5432
  • UN: Джон
  • PW: 12345

Я продолжал получать

Как можно пойти дальше и отладить это?

1 Ответ

3 голосов
/ 16 апреля 2019

Указав порт в конфигурации expose, вы открываете этот порт только для других контейнеров Docker в сети Docker.Он не будет открыт для подключения с хост-компьютера (OS X).

Вы хотите добавить конфигурацию ports, которая позволяет сопоставлять порты хост-машины с контейнером..

database:
  image: postgres:11.2
  expose:
   - "5432"
  ports:
    - "5432:5432"
  environment:
    - "POSTGRES_PASSWORD=12345"
    - "POSTGRES_USER=john"
    - "POSTGRES_DB=api"

Дополнительная информация в этом полезном вопросе StackOverflow & A.

...