我有一个Docker composer文件,类似于:
version: '2' services: db: image: mariadb:10.1 volumes: - "./.data/db:/var/lib/mysql" restart: always environment: MYSQL_ROOT_PASSWORD: test MYSQL_DATABASE: test MYSQL_USER: test MYSQL_PASSWORD: test test: depends_on: - db links: - db:db build: context: . args: MYSQL_HOST: db MYSQL_DATABASE: test MYSQL_USER: test MYSQL_PASSWORD: test ports: - "8000:80" restart: always
内部测试容器Dockerfile
FROM ... ... ARG MYSQL_HOST 127.0.0.1 RUN set -x; echo $MYSQL_HOST RUN script ... --param $MYSQL_HOST
但是,mysql_host
变量(我希望它是另一个容器的内部IP)不会被转换为另一个容器名称。
怎么能做到呢?用Docker-Compose可以用另一种方式实现吗?
我不认为你想在这里进行构建论证。可能会将MYSQL_HOST设置为环境变量。在docker-compose中,文字字符串db
实际上可以解析到db容器中。
通常,compose文件如下所示:
test:
links:
db:db
environment:
- MYSQL_HOST=db
然后在测试代码中执行以下操作:
...
String dbHost = System.getEnv("MYSQL_HOST");
...
这样,MySql主机就不需要被构建到您的映像中,这样就不需要一直重新构建您的映像。
问题内容: 我已经在Docker上进行了几天的实验,并逐渐喜欢上它。但是,有些事情仍然使我难以理解。到目前为止,这是我所拥有的 创建低占用空间的Ubuntu 14.04映像 为Apache映像创建Dockerfile 为PHP5创建Dockerfile 为memcached创建Dockerfile并构建映像 用memcached启动Docker容器 用Apache启动Docker容器并将其链接到之
问题内容: 到目前为止,我已经成功地使用Mesos,Marathon和Docker来管理服务器群以及我放置在其上的容器。但是,我现在想走得更远,开始做一些事情,例如自动将haproxy容器链接到启动的每个主要docker服务,或者提供其他基于链接的守护程序和容器化服务,这些服务仅对单个父容器可用。 通常,我会先使用一些名称启动帮助程序服务,然后在启动真实服务时将其链接到帮助程序,然后一切都会好起来
我使用的示例是:https://clubhouse.io/developer-how-to/how-to-set-up-a-hadoop-cluster-in-docker/ 我首先用:docker-compose up-d开始HDFS 然后我用debezium网站上的图片启动了动物园管理员Kafka和mysql。https://debezium.io/documentation/referenc
问题内容: 我想知道容器ID的生成方式,因此请提供执行docker run时提供容器ID的源代码? 问题答案: 这是docker守护程序创建容器的代码片段: 因此,创建ID和名称的逻辑是在generateIDAndName函数中: 这是字符串源,具体方法是使用false作为输入参数的generateID: 正如你所看到的,该值是随机与此产生的随机
我在Docker容器中安装了Oracle数据库,但不知道如何成为root用户。如果我从主人那里听到这个 或者 我得到 如果我做了 从主机,然后 从容器中,它询问root密码,但我不知道。 Hy主机操作系统是Ubuntu 18.04,链接到docker文件 编辑1: 发现了一个Docker错误。
这是Node.js应用程序。 为了部署应用程序,我分别使用了一个node.js容器和一个redis容器,并将node.js容器与redis容器链接起来。 redis容器可通过以下方法获得 但我有个错误说: 由于redis容器暴露于6379,而我的nodejs容器正在链接到redis容器。在我的Node.js应用程序中,使用端口6379连接到localhost redis服务器应该是可以的,但实际上