当前位置: 首页 > 知识库问答 >
问题:

docker容器中runniung多个命令的bash命令

蒋曾笑
2023-03-14

我正在尝试用docker容器中的一个表建立一个数据库。为了正确运行数据库,我需要运行以下命令:

db:
image: mysql
command: >
  bash -c "--init-file /pictureapi_mydb_response.sql
  && --default-authentication-plugin=mysql_native_password"
volumes:
  - ./pictureapi_mydb_response.sql:/pictureapi_mydb_response.sql
restart: always
ports:
  - 3307:3306
environment:
  MYSQL_ROOT_PASSWORD: ${DB_MYSQL_PASS}

bash:--:无效选项db_1用法:bash[GNU long option][option]...
db_1 bash[GNU long option][option]脚本-文件...
db_1 GNU long options:
db_1--debugg
db_1--debugger\

如果“bash”指令不起作用,我应该如何实际运行两个或多个命令?

共有1个答案

伍皓
2023-03-14

Docker HubMySQL映像的配置是,如果命令:-开始,则假定整个命令为MySQLD启动选项。它实际上不是“命令”,您不能使用bash来运行它。如果需要多个启动选项,只需将它们组合成一个命令::

command: --init-file /pictureapi_mydb_response.sql --default-authentication-plugin=mysql_native_password

启动Docker容器时,它的“entrypoint”和“command”部分被组合成一个命令,因此如果这两个部分都存在,则命令将作为附加参数传递给entrypoint。最常见的模式是命令本身是一个完整的可执行命令,但也有另一种模式,即入口点是(或提供)要运行的主命令,命令只提供额外的选项。

Docker HubMySQL容器有一个相当复杂的入口点脚本,但它最终以以下逻辑结束:

# if command starts with an option, prepend mysqld
if [ "${1:0:1}" = '-' ]; then
    set -- mysqld "$@"
fi

也就是说,如果使用

command: --an-option-starting-with-minus

容器运行的实际命令是mysqld--an-option-starting-with-minus。因此,如果您需要设置多个mysqld选项,您只需将它们作为“命令”传递,它们就会得到适当的处理。

 类似资料:
  • 这意味着:在容器中运行一个bash命令,将一些文本推入容器中的文件。 现在,Azure容器实例表示您不能传递:https://docs.microsoft.com/en-us/Azure/container-instances/container-instances-exec的命令参数 那么,在Azure的自动化构建/发布过程中,您将如何构建、发布和配置容器?

  • 问题内容: 我正在尝试构建自定义的tcserver docker映像。但是我在启动Web服务器和tomcat时遇到了一些问题。 据我了解,我应该使用ENTRYPOINT运行我想要的命令。 问题是,是否可以使用ENTRYPOINT运行多个命令? 还是应该创建一个小的bash脚本来全部启动? 基本上我想做的是: 但是我不知道这是否是一个好习惯,或者是否可行。 问题答案: 如果要在入口点运行许多命令,最

  • 问题内容: 我有一个创建的容器,但我不记得我用来启动它的确切命令。有什么办法可以找回吗? 这与在Docker中查看运行/停止容器的完整命令不同, 我想知道的是生成容器的完整docker命令,而不是容器内的命令。 问题答案: 通过查看的输出,您可以推断出大部分信息。 例如,您可以通过查看键来发现在容器内部启动的命令。如果我运行: 我以后可以运行: 得到: 同样,的输出还将包含有关容器中使用的Dock

  • 我有一个我创建的容器,但我记不起我用来启动它的确切的docker run命令。有什么方法可以找回吗? 这与在Docker中查看运行/停止容器的完整命令不同,我想知道的是生成容器的完整Docker命令,而不是容器中的命令。

  • 基础常用命令 某个命令 --h,对这个命令进行解释 某个命令 --help,解释这个命令(更详细) man某个命令,文档式解释这个命令(更更详细)(执行该命令后,还可以按/+关键字进行查询结果的搜索) Ctrl + c,结束命令 TAB键,自动补全命令(按一次自动补全,连续按两次,提示所有以输入开头字母的所有命令) 键盘上下键,输入临近的历史命令 history,查看所有的历史命令 Ctrl +

  • 问题内容: 我想在我运行的每个bash命令之后打印日期。 这可以帮助我了解远离键盘时要执行多少命令。 我知道我能做 获取日期,但我不知道在bash上执行的每个命令之后如何甚至是否可以运行此命令。 我也会对在每个命令 之前 运行同一命令感兴趣,因此我可以知道一个命令花费了多长时间。 可能吗? 我应该编辑什么文件? 例如: 如果我也可以介绍以下功能,我将很高兴: 第一个日期是我运行程序的日期,第二个是