我正在尝试使用mokodb在数字海洋上使用dokku部署Node.js应用程序.不幸的是,我有一些问题让节点应用程序连接到mongodb.
到目前为止我做了什么.0.我在git repo中有一个node.js应用程序1.在数字海洋中创建了dokku实例(在ubuntu 14.04上运行)2.我创建了一个dokku-mongodb-plugin(参见https://github.com/jeffutter/dokku -mongodb-plugin):按照那里的git clone etc安装说明进行操作.3.将我的应用程序推送到数字海洋服务器(git push -u production master)4.尝试创建一个mongodb进程:(在服务器上):dokku mongodb:创建testapp(testapp是我的应用程序的名称)5.运行我的app:dokku运行testapp节点app.js
这会导致连接错误(在底部)
我测试过:dokku mongodb:list
并且它没有返回任何内容,这让我觉得插件可能存在问题?
否则,我怀疑这可能是因为mongodb在与标准localhost不同的ip /进程下运行.
无论如何,我不确定问题是什么.任何帮助,将不胜感激.
干杯,迈克
vents.js:72投掷; //未处理的'错误'事件^错误:无法连接到[localhost:27017]为null.(/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:546:74)在emit(events.js:106:17)处于null.(/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:150:15)在Socket的emit(events.js:98:17)处.(/app/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:533:10)在Socket.emit(events.js:95:17)的net.js:440:14处理过程. _tickCallback(node.js:419:13)
我在 Mac OSX 上使用 Docker。
运行容器后,我检查 IP 地址。
docker inspect container-name | grep IP
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"IPAddress": "172.17.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
Run Code Online (Sandbox Code Playgroud)
现在当我去172.17.0.5时,没有任何反应。
然后用另一种方式检查IP地址。
docker-machine ip default
192.168.99.102
Run Code Online (Sandbox Code Playgroud)
192.168.99.102 作品。
现在我的问题是为什么它输出不同的 IP 地址而第一个不起作用。
我是新手,docker我可能遗漏了很多东西,尽管我浏览了基本文档并且我正在尝试部署一个简单的 Spring Boot API
我已将API部署为docker-spring-boot .jar文件,然后docker使用以下命令安装并推送它:
sudo docker loginsudo docker tag docker-spring-boot phillalexakis/myfirstapi:01sudo docker push phillalexakis/myfirstapi:01然后我用 docker命令启动了APIrun:
sudo docker run -p 7777:8085 phillalexakis/myfirstapi:01
当我访问localhost:7777/hello 时,我得到了想要的响应
这是我的 Dockerfile
FROM openjdk:8
ADD target/docker-spring-boot.jar docker-spring-boot.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar","docker-spring-boot.jar"]
Run Code Online (Sandbox Code Playgroud)
基于这个回答的帖子这个命令来获取ip address
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
Run Code Online (Sandbox Code Playgroud)
所以,我运行它,container_name_or_id = phillalexakis/myfirstapi:01我收到这个错误
Template parsing error: template: :1:24: executing "" at <.NetworkSettings.Networks>: map has …Run Code Online (Sandbox Code Playgroud) (类似于如何从主机获取 Docker 容器的 IP 地址? ,但略有不同,因为我们对这里的所有容器感兴趣)
我遇到了与我们内部服务器的 IP 冲突,该服务器与 Docker 容器发生冲突。我已经重新配置/etc/docker/daemon.json,将设置设置default-address-pools为另一个网络。但是我现在如何找到七个 Docker 容器中的哪一个正在使用这个特定的 IP 网络呢?
我是码头工人的新手。我正在创建一个“Hello, World”示例。我想做的就是在 docker 中启动 Apache,然后从主机查看默认网站。
Dockerfile
FROM centos:latest
RUN yum install epel-release -y
RUN yum install wget -y
RUN yum install httpd -y
EXPOSE 80
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
Run Code Online (Sandbox Code Playgroud)
然后我构建它:
> docker build .
然后我给它贴上标签:
docker tag 17283f566320 my:apache
然后我运行它:
> docker run -p 80:9191 my:apache
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
Run Code Online (Sandbox Code Playgroud)
然后就运行了......
在另一个终端窗口中,我尝试发出命令curl来查看默认网站。
> curl -XGET http://0.0.0.0:9191
curl: (7) Failed …Run Code Online (Sandbox Code Playgroud) 我有 db 和 server 容器,它们都在同一个网络中运行。可以通过其容器 ID ping db 主机没有问题。当我手动为 db 容器设置主机名 ( -h myname) 时,它产生了效果($ hostname返回设置主机),但我无法从同一网络中的另一个容器 ping 那个主机名。容器 ID 仍然可以 ping 通。虽然它在 docker compose 中没有问题。我错过了什么?
我们可以在 Docker 撰写文件 YML 中使用模板吗?
例如,我想要部署带有复制的服务,并且我想要为容器设置名称,例如:-servicename-_-replicId-
我正在尝试以下方法:
我的想法是我需要针对不同的数据库版本运行测试。
为此,我需要能够与golang容器中的每个sql容器进行对话。
我尝试过的
方法1-使用--link:
MYSQL容器:
docker run --name mysql55c -p 127.0.0.1:4200:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.5
Run Code Online (Sandbox Code Playgroud)
高朗应用程式容器
docker run -w /go/src/app -it --link mysql55c -d --name golangapp -v $(pwd):/go/src/app golang bash -c "go get github.com/go-sql-driver/mysql;go build main.go; go test -v
--config ./config.ini"
Run Code Online (Sandbox Code Playgroud)
方法2-使用--net(网桥网络和主机): 创建网桥nw
码头工人网络
MYSQL容器:
docker run --name mysql55c --net mynw -p 127.0.0.1:4200:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.5
Run Code Online (Sandbox Code Playgroud)
高朗应用程式容器
docker run -w /go/src/app -it --net mynw -d --name golangapp -v $(pwd):/go/src/app golang bash -c "go …Run Code Online (Sandbox Code Playgroud) docker ×7
apache ×1
centos ×1
centos7 ×1
containers ×1
devops ×1
dockerhub ×1
dokku ×1
jenkins ×1
mongodb ×1
networking ×1
node.js ×1
service ×1
spring-boot ×1
templates ×1