通过 Mac OS X 连接到 Docker 中的远程数据库
Connect to a remote Database that live in Docker via Mac OS X
我在 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:本地主机
- 端口:5432
- 联合国:约翰
- 密码:12345
我不断收到
如何进一步调试它?
通过在 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"
More information in this helpful Whosebug Q&A.
我在 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:本地主机
- 端口:5432
- 联合国:约翰
- 密码:12345
我不断收到
如何进一步调试它?
通过在 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"
More information in this helpful Whosebug Q&A.