docker.io – Docker连接应用程序和数据库容器
我试图用我的Scala-Akka应用程序和两个独立的Docker容器上的MySQL数据库。 我发现Docker允许开发人员用名为–link的标志将他们的应用程序连接到他们的数据库。 在我用来创build图像的Dockerfiles中,我添加了EXPOSE 3306 8080。
这就是我如何运行容器:
docker run -d -p 3306:3306 --name mysql centos6mysql docker run -d -p 8080:8080 --name scalaapp --link mysql:db centos6scala
在运行容器后,我使用docker ps,我可以看到活动的容器。 但是,应用程序容器似乎没有使用MySQL容器中的数据库。 任何人都知道什么是错的?
Docker中的链接允许在容器之间build立networking连接。 Docker会为你的链接容器定义URL,IP,端口和协议的环境variables。 这些名称将基于您的容器名称。 例如:
DB_NAME=/web2/db DB_PORT=tcp://172.17.0.5:5432 DB_PORT_5432_TCP=tcp://172.17.0.5:5432 DB_PORT_5432_TCP_PROTO=tcp DB_PORT_5432_TCP_PORT=5432 DB_PORT_5432_TCP_ADDR=172.17.0.5
您可以使用这些环境variables来设置您的Akka应用程序容器以连接到您的数据库容器。 但是,您必须手动configuration应用程序容器才能这样做。 Docker不会自动为你build立连接。
因此,在您的应用程序的某个地方,您需要将这些值传递给启动脚本,如下所示:
./restcore --Ddb.default.db="jdbc:mysql//${DB_PORT_3306_TCP_ADDR}:${DB_PORT_3306_TCP_PORT"
- 如何让sbt-native-packager结合两层docker图像
- Docker Akka-Http应用程序端点无法访问
- 在AWS上使用Kubernetes创build和运行Docker容器集群
- 在使用sbt-native-packager构builddocker软件包时使用重复映射
- 在AWS EBS microservice docker环境中使用Kafka,以避免丢失用户请求并处理更多并发点击
- 如何通过使用sbt-docker或手动编写docker文件在docker中运行sbt项目?
- 一旦docker达到其最大内存限制,AWS EB应该创build新的实例
- Akka HTTP在Docker容器中过早closures
- 使用新的标签添加docker发布步骤到sbt-release过程