【发布时间】:2019-11-07 02:38:48
【问题描述】:
我想将我的 docker-compose 配置用于开发目的,并运行前端、后端、nginx 来让路由服务一起运行和启动。现在我也在使用 kubernetes 端口转发来访问我的 neo4j 数据库。我想要实现的是在 docker 容器中使用映射端口,即。外部端口也应该在 docker 内可见。它可以在没有 docker 的情况下顺利运行,但不能在容器内运行。我的 docker-compose 文件看起来像这样,没什么花哨的:
version: '3'
networks:
lan:
services:
nginx:
restart: always
build:
dockerfile: Dockerfile.dev
context: ./nginx
ports:
- 3050:80
depends_on:
- client
- api
client:
build:
context: ./client
dockerfile: Dockerfile.dev
volumes:
- /app/node_modules
- ./client:/app
api:
build:
context: ./
dockerfile: Dockerfile.dev
volumes:
- /app/node_modules
- ./:/app
environment:
- REACT_APP_NEO4J_HOST=neo4j://neo4j:password@localhost:7687
- REACT_APP_NEO4J_LOGIN=neo4j
- REACT_APP_NEO4J_PASS=password
不幸的是,我收到错误,因为它不是我的 docker api 容器中的转发器。转发我正在使用的端口(经过身份验证后):
kubectl port-forward svc/neo4j-ee-neo4j 7687:7687 但当然它只在我的主机上可用。
【问题讨论】:
-
您无法从 docker 容器访问主机上的端口。我自己没有尝试过,但是如果我遇到你的情况,我可以尝试的一件事是构建一个包含 kubectl 的 docker 映像,挂载 kubectl 配置,然后从 docker 容器运行它以创建一个端口转发到k8s 集群。然后其他容器应该能够连接到该新容器。同样,我自己没有尝试过。
-
你能在 Docker Compose 中运行所有东西,或者在 Kubernetes 中运行所有东西,而不是尝试将两者混合使用吗?
-
嗯,我可以试试,但我不确定我能做到。 Neo4J 部署在谷歌云中(不是我,也不是我维护的),但所有其他服务都在本地以开发模式运行(反应部分,快递部分,nginx)。我想要实现的是使用一个简单的命令立即启动和运行所有这些服务,就像在 docker compose world 中一样(通过
docker-compose up)。
标签: docker kubernetes docker-compose