当前位置: 首页 > 面试题库 >

docker.io-应用程序和数据库容器之间的Docker链接

米景辉
2023-03-14
问题内容

我试图在两个单独的Docker容器上将我的Scala-Akka应用程序与MySQL数据库一起使用。我发现Docker允许开发人员使用名为–
link的标志将其应用程序链接到其数据库。在我用来创建映像的Dockerfile中,向其中添加了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中的链接允许在容器之间建立网络连接。Docker将为链接的容器定义URL,IP,端口和协议的环境变量。这些名称将基于您的容器名称。例如:

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

您可以使用这些环境变量来设置Akka应用程序容器以连接到数据库容器。但是,您必须手动配置应用程序容器才能这样做。Docker不会自动为您建立连接。

因此,您需要在应用程序中的某个位置将这些值传递给启动脚本,如下所示:

./restcore --Ddb.default.db="jdbc:mysql//${DB_PORT_3306_TCP_ADDR}:${DB_PORT_3306_TCP_PORT"


 类似资料:
  • 我使用docker撰写启动一个mysql da和一个springstart应用程序。 这是我的docker-compose.yml 这是我的application.properties 在这里,我创建了jdbi: 不管我怎么做,我都无法让集装箱在码头内相互交谈。如果我单独启动sql,我可以在主机中看到连接(在datagrip中)。如果我从容器中运行java程序,它会看到主机中的数据库。即使我运行d

  • 我有两个docker容器,它们通过以下命令运行: > docker run——name postgres-v“/Users/xxx/Desktop/Coding/DockerMounting”:/home/-e postgres_PASSWORD=xyz-d postgres docker run-it-v“/Users/xxx/Desktop/Coding/DockerMounting”:/ho

  • Azure容器服务和Web App for Containers有什么区别? 它们似乎都提供了一个完全托管的平台,我们可以在这个平台上部署容器。我觉得容器的Web应用程序必须提供更多的东西,但我没有看到。我已经阅读了Azure Container Service FAQ和Web App for Containers intro page,但对我来说区别并不明显。

  • 我将为不同云环境(AWS、Azure、google cloud等)中的多个客户部署多(30)个应用程序,并让他们彼此共享数据。我的计划是使用区块链/IPFS技术,每个客户保留一份数据副本,对这些数据的任何更改都会传播到所有节点。 数据可分为两种类型: 每个客户的公共数据由所有应用程序直接共享和访问。 每个客户的私有数据在存储之前都使用客户的公钥进行加密,所有应用程序都可以访问密码。 这听起来是一个

  • 本文向大家介绍数据库和区块链之间的区别,包括了数据库和区块链之间的区别的使用技巧和注意事项,需要的朋友参考一下 数据库 数据库表示由表,用于存储用户和系统信息的模式组成的数据结构。它提供了用于创建,读取,删除和更新其记录的SQL。DBMS,数据库管理系统管理数据库。通常,数据库管理员会修改敏感数据。数据库遵循客户端-服务器模型架构。 区块链 区块链代表类似于数据库记录的区块链。该链随着在操作期间向

  • 只有在使用“旧的”版本1格式时,我才会在容器的/etc/hosts中看到链接。 我有以下基本版本2 docker-compose.yml文件。 当我运行以下命令时: null