Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在docker compose中执行mysql命令时出错_Mysql_Docker_Docker Compose_Dockerfile - Fatal编程技术网

在docker compose中执行mysql命令时出错

在docker compose中执行mysql命令时出错,mysql,docker,docker-compose,dockerfile,Mysql,Docker,Docker Compose,Dockerfile,当我执行xdcomp_my_sql_client命令时,它会ping ip,但当它试图到达mysql服务器时,它失败了。如果我在容器运行时执行完全相同的命令,它就会工作。在执行命令时,mysql服务器似乎没有运行。但是我使用了“depens_on”命令,那么我做错了什么 多谢各位 version: '2' services: xdcomp_my_sql_server: image: mysql/mysql-server:latest environment: M

当我执行xdcomp_my_sql_client命令时,它会ping ip,但当它试图到达mysql服务器时,它失败了。如果我在容器运行时执行完全相同的命令,它就会工作。在执行命令时,mysql服务器似乎没有运行。但是我使用了“depens_on”命令,那么我做错了什么

多谢各位

version: '2'

services:
  xdcomp_my_sql_server:
    image: mysql/mysql-server:latest
    environment:
      MYSQL_ROOT_PASSWORD: diego
      MYSQL_USER: otro
      MYSQL_PASSWORD: otro
      MYSQL_ROOT_HOST: 172.28.0.101
    networks:
      SQLNetwork:
        ipv4_address: 172.28.0.102

  xdcomp_my_sql_client:
    build: .
    command: sh -c 'ping -c 5 172.28.0.102 && mysql -h 172.28.0.102 -u root -pdiego sys < /lafayette/forensic.sql && tail -f /etc/hostname'
    ports:
      - 83:80
    networks:
      SQLNetwork:
        ipv4_address: 172.28.0.101
    depends_on:
      - xdcomp_my_sql_server


networks:
  SQLNetwork:
    driver: "bridge"
    ipam:
      config:
        - subnet: 172.28.0.0/24
          gateway: 172.28.0.201

使用docker包括两个步骤:

  • 塑造形象
  • 基于映像创建容器并运行此容器
关键是,在第二步中,您只能连接到服务器

Dockerfile
在构建映像时“执行”。此时,您没有任何容器,因此无法连接到它们。 你需要移动命令

运行cd-lafayette&mysql–h 172.25.0.102–u root–ppass sys

Dockerfile


你能给我看看你的文件吗?我将尝试修复此问题。问题如下:在执行客户机命令时,mysql服务器未运行。即使当密钥“dependens_-on”(参见:)存在时,出于这个原因,解决方案仍然是等待mysql服务器。这是通过以下命令完成的:

命令:sh-c'直到nc-z-v-w20 172.28.0.102 3306;做睡眠1; echo“等待mysqlserver启动…”;完成和ping-c 5 172.28.0.102&& mysql-h 172.28.0.102-u root-pdiego sys&& tail-f/etc/hostname'

通过以下线路进行了等待:

直到nc-z-v-w20 172.28.0.102 3306;做睡眠1; echo“等待mysqlserver启动…”;完成


nc=netcat命令,它检查到给定ip和端口的连接

谢谢,我现在明白为什么我这样做是错误的了。但我在尝试做我想做的事情时仍然有问题。我想在docker compose为这两个容器运行后,将数据库从客户端容器上载到服务器容器。我在docker compose中尝试了以下命令:command:sh-c'ping-c5172.28.0.102&&mysql-h172.28.0.102-u root-ppasssysFROM ubuntu:16.04 RUN apt-get update RUN apt-get install -y mysql-client RUN apt-get install -y git RUN git clone https://github.com/linkedin/lafayette RUN apt-get update RUN apt-get install -y python-dnspython RUN apt-get install -y python-pip RUN pip install Flask RUN pip install python-dateutil RUN apt-get install -y python-mysqldb RUN pip install requests RUN pip install multiprocessing RUN pip install multiprocess RUN apt-get install -y vim RUN apt-get -y install iputils-ping