我有3个简单的微服务(mysql,apirest,gui),我开始使用docker-compose:
version: '3.2'
services:
mysql:
image: mysql/mysql-server:5.6
container_name: mysql
restart: always
volumes:
- mysql:/var/lib/mysql/data
ports:
- "3306:3306"
networks:
- mynetwork
deploy:
mode: replicated
replicas: 1
environment:
- MYSQL_ROOT_PASSWORD=mypwd
- MYSQL_USER=myuser
- MYSQL_PASSWORD=myuserpwd
- MYSQL_DATABASE=my-db
apirest:
image: .....apirest:latest
container_name: apirest
restart: always
volumes:
- apirest:/apirest/tmp
ports:
- "30000:3000"
networks:
- mynetwork
deploy:
mode: replicated
replicas: 2
gui:
image: ......gui:latest
container_name: gui
restart: always
links:
- apirest
ports:
- "34200:4200"
networks:
- mynetwork
networks:
mynetwork:
volumes:
apirest:
mysql:
在 MySQL的 和 apirest 微服务没有问题可以进行通信(我可以连接到我的数据库 apirest 使用 的MySQL
作为主机名。
但是,当我尝试使用 apirest* 作为主机名执行http请求(角度)时,我在 gui 微服务中收到以下错误: *
无法加载资源:net :: ERR_NAME_NOT_RESOLVED
从 gui 微服务中,我可以ping apirest :
docker exec -it gui ping apirest
--- apirest ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.069/0.203/0.338 ms
如果我使用公共服务器地址(http:// serverip:30000 / api /
test
)来执行http请求而不是 apirest
,则没有问题,http请求成功。
我究竟做错了什么??
谢谢
AJAX请求是浏览器请求,而不是服务器端请求,并且您的浏览器不是mynetwork的一部分。发出ajax请求(客户端浏览器必须是公共域或具有服务节点端口的映射主机文件)。您仍然需要在浏览器主机中映射主机文件,或者在gui代码中使用带有服务节点端口的完整url。
如果您想避免使用端口,在我使用Nginx的情况下,代理是公开服务的最佳方法
GUI-ajax req(浏览器到服务器req)----> PROXY(NGINX)—(服务器到服务器)-> apirest
我有一个mongodb服务和一个使用docker compose运行的测试服务: 在我试图运行的start.sh脚本中: 但我得到了以下错误: 我的问题是:为什么会发生错误?Dependes_on属性不应该自动包含服务依赖项吗?正如这里提到的: depends_on 表示服务之间的依赖关系,这有两个效果: docker compose up将按依赖顺序启动服务。在下面的示例中,db和redis将在
问题内容: 当docker-demon启动时,它会向iptables添加一些规则。当通过我删除所有规则时,必须停止并重新启动docker demon以重新创建dockers规则。 有没有办法让docker重新添加其他规则? 问题答案: 最好的方法是重启docker服务,然后将docker规则重新添加到iptables中。(上DEB基:) 但是,如果您只想恢复这些规则而无需重新启动服务,我保存了我的
问题内容: 我试过在Windows 7上安装docker(使用boot2docker)。但是控制台只是突然存在,我看不到错误,更不用说运行任何命令了。 在安装过程中,我尝试安装和不安装VirtualBox。我也尝试卸载并重新安装docker和virtualbox。似乎没有任何作用。 这是我运行时看到的控制台错误: 问题答案: 请检查您的BIOS的VT-x设置。根据您提供的日志,有一个错误:
我的困惑是wile创建镜像主机端口在Dockerfile中被指定为8080,但当从同一个镜像主机端口运行容器时,被指定为3000。那么这个容器将在哪个主机端口运行,为什么?
问题内容: 从文档: Linux上配置文件的默认位置是/etc/docker/daemon.json 但是我没有在新的docker安装中安装它: 问题答案: Linux上的默认配置文件路径如您所说,但默认情况下不存在。您可以自己编写一个文件,然后在其中放置其他docker daemon配置内容,而不用将这些配置选项传递到命令行中。您甚至不必这样做,因为这是默认路径,但对于正在检查系统的其他人来说,
问题内容: ubuntu 16.04,已安装nvidia-docker,正在运行tensorflow容器,python 2.7 我想在容器内运行一个简单的python代码。如下图所示 但是当我运行这个时,这个错误来了 _tkinter.TclError:没有显示名称,也没有$ DISPLAY环境变量 并根据该站点https://github.com/moby/moby/issues/8838, 我