2017-08-03 136 views
0

我正在学习docker,并使用卷创建了一个持久数据库的MySQL容器,并且我想在docker-compose up --build过程中从Web容器连接到MySQL容器。将网络服务器容器连接到MySQL容器

问题是在此期间连接总是失败。我只能在一切完成后才能访问MySQL容器。

下面的build/web-server/docker-compose.yml文件中的行RUN mysql -uroot -pmy-root-password -hdatabase总是失败。

我该如何做到这一点?

泊坞窗,compose.yml

version: '3' 
services: 
    database: 
     container_name: kadu-database 
     build: 
      context: build/database 
      dockerfile: Dockerfile 
    web-server: 
     container_name: kadu-web-server 
     links: 
      - database 
     depends_on: 
      - database 
     build: 
      context: build/web-server 
      dockerfile: Dockerfile 

编译/数据库/泊坞窗,compose.yml

FROM mariadb:5.5 
ARG MYSQL_DATABASE 
ARG MYSQL_ROOT_PASSWORD 

RUN apt-get update 
RUN apt-get install patch --assume-yes 

构建/ Web服务器/泊坞窗,compose.yml

FROM ubuntu:16.04 
ARG WEB_USERNAME 
ARG MYSQL_DATABASE 
ARG MYSQL_ROOT_PASSWORD 
RUN apt-get update --quiet=2 && apt-get install mariadb-client --quiet=2 
RUN mysql -uroot -pmy-root-password -hdatabase 
+0

什么是你想通过连接到数据库的构建阶段实现? – gpapaz

回答

1

与码头工人工作包括两个步骤:基于图像和运行此容器

  • 构建图像
  • 创建容器

的一点是,你mysql client可以连接到服务器在第二步。

Dockerfile“执行”,而你建立图像。在这个时候你没有任何容器,因此你不能连接到它们。 你需要从Dockerfile移动命令RUN mysql -uroot -pmy-root-password -hdatabaseentrypoint.sh