Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
Mysql 构建docker容器后运行自定义SQL查询 我想做的是: 创建一个运行mariadb服务器的容器 在生成容器之前运行一些自定义查询。(不是在启动时) 我所做的: 我创建了一个docker compose.yml文件,其中描述了我的服务,并为每个组件创建了一个dockerfile,插入要运行的命令。我得到了显示的错误 我增加了一些睡眠时间。没什么变化 我尝试根据数据库创建第二个服务,并从那里运行查询。没有任何改变,仍然是相同的错误 问题在哪里?_Mysql_Docker_Mariadb_Dockerfile - Fatal编程技术网

Mysql 构建docker容器后运行自定义SQL查询 我想做的是: 创建一个运行mariadb服务器的容器 在生成容器之前运行一些自定义查询。(不是在启动时) 我所做的: 我创建了一个docker compose.yml文件,其中描述了我的服务,并为每个组件创建了一个dockerfile,插入要运行的命令。我得到了显示的错误 我增加了一些睡眠时间。没什么变化 我尝试根据数据库创建第二个服务,并从那里运行查询。没有任何改变,仍然是相同的错误 问题在哪里?

Mysql 构建docker容器后运行自定义SQL查询 我想做的是: 创建一个运行mariadb服务器的容器 在生成容器之前运行一些自定义查询。(不是在启动时) 我所做的: 我创建了一个docker compose.yml文件,其中描述了我的服务,并为每个组件创建了一个dockerfile,插入要运行的命令。我得到了显示的错误 我增加了一些睡眠时间。没什么变化 我尝试根据数据库创建第二个服务,并从那里运行查询。没有任何改变,仍然是相同的错误 问题在哪里?,mysql,docker,mariadb,dockerfile,Mysql,Docker,Mariadb,Dockerfile,在构建并运行每个服务之前,我无法执行任何命令。 在以下dockerfile中: FROM mariadb:latest ARG MYSQL_ROOT_PASSWORD RUN mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE test" 我得到以下错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/r

在构建并运行每个服务之前,我无法执行任何命令。 在以下dockerfile中:

FROM mariadb:latest
ARG MYSQL_ROOT_PASSWORD
RUN mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE test"
我得到以下错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
以下是
docker compose.yml
文件:

version: '3.1'

services:

  db:
    image: mariadb:latest
    build: 
      context: ./db
      args:
        MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
    container_name: IUB_sql
    restart: unless-stopped
    environment:
       MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
        MYSQL_DATABASE: "useless_test_db"
        MYSQL_USER: "${MYSQL_USER}"
        MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
    ports:
      - ${MYSQL_PORT}:3306
注: 我不想只创建数据库,我想运行一些任意查询

注2: 如果我删除
runmysql…
行,服务就会启动。然后,如果尝试运行以下命令,则可以成功运行查询:
docker exec-umysql-it IUB\u sql mysql-uroot-p-e“创建数据库测试\u cmdline”

请参阅中的“初始化新实例”。 您可以添加包含SQL文件的文件夹,这些SQL文件将只运行一次。 这可以通过docker compose添加此配置来完成:

volumes:
  - /your-directory-with-sql-files:/docker-entrypoint-initdb.d
有关详细信息,请参阅。

请参阅中的“初始化新实例”。 您可以添加包含SQL文件的文件夹,这些SQL文件将只运行一次。 这可以通过docker compose添加此配置来完成:

volumes:
  - /your-directory-with-sql-files:/docker-entrypoint-initdb.d

有关详细信息,请参阅。

;标准模式是将SQL脚本放入
/docker entrypoint initdb.d
中,并让它们在第一次启动时运行。你试图避免这种模式有什么特别的原因吗?@DavidMaze谢谢你,我不知道这种模式。我现在尝试使用它,但它似乎不适用于mariadb,因为此图像没有文件:
/entrypoint.sh
。你有什么建议吗?我不知道具体的文件是什么,或者你为什么需要引用它。(在“初始化新实例”下)中有一个关于模式的简短段落。;标准模式是将SQL脚本放入
/docker entrypoint initdb.d
中,并让它们在第一次启动时运行。你试图避免这种模式有什么特别的原因吗?@DavidMaze谢谢你,我不知道这种模式。我现在尝试使用它,但它似乎不适用于mariadb,因为此图像没有文件:
/entrypoint.sh
。你有什么建议吗?我不知道具体的文件是什么,或者你为什么需要引用它。(在“初始化新实例”下)有一个关于模式的简短段落。您的解决方案对我不起作用。您的解决方案对我不起作用。