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

Docker容器:/bin/sh:cat:无此类文件或目录

司凡
2023-03-14

我正在使用mysql/mysql-server映像在docker中创建一个mysql服务器。因为我想自动设置我的数据库(添加用户、创建表),所以我创建了一个SQL文件来完成这个任务。为了自动运行该脚本,我使用这个dockerfile扩展了映像:

FROM mysql/mysql-server:latest

RUN mkdir /scripts
WORKDIR /scripts

COPY ./db_setup.sql .
RUN mysql -u root -p password < cat db_setup.sql

但出于某种原因,这种情况会发生:

/bin/sh: cat: No such file or directory
ERROR: Service 'db' failed to build : The command '/bin/sh -c mysql -u root -p password < cat db_setup.sql' returned a non-zero code: 1

如何修复此问题?

共有3个答案

陶成化
2023-03-14

命令cat在mysql/mysql服务器:最新映像中不存在。

此外,您只需要提供文件名afetr重定向。

运行mysql-u root-p password

段干楚青
2023-03-14

RUN是一个构建时命令。MySQL此时未运行。

如果您在/正在使用标准映像,则有一个用于数据库初始化的位置:

FROM mysql:8.0
COPY db_setup.sql /docker-entrypoint-initdb.d
邢骏
2023-03-14

您只需从运行命令中删除cat命令:

RUN mysql -u root -p password < db_setup.sql

由于在WORKDIR设置的当前目录中找不到cat,因此不会返回此类文件或目录。您可以将mysql的stdin重定向为来自db\U设置。sql文件。编辑以澄清<代码>

编辑2:请记住,您的示例是一个RUN命令,它试图运行mysql并在docker映像构建时创建图层。您可能希望在运行时的mysql entrypoint脚本期间运行此脚本(例如,脚本通过官方mysql映像的docker-entrypoint.sh脚本从docker-entrypoint-initdb. d/目录运行)或使用官方映像记录的其他功能。

 类似资料:
  • 问题内容: 因此,我是第一次运行ProGuard,但出现一个奇怪的错误: 这是我的礼物: 我的proguard-rules.txt: 问题答案: Android的摇篮插件已经指定了所有输入和输出你,所以你必须 不 指定,或。 此外,Android SDK中的文件会为您指定所有常规Android设置,因此您无需再次指定它们。 本质上,您的文件可以为空,但任何应用程序特定的设置除外,以确保任何反射都能

  • 我一直在使用Docker映像在Heroku上发布Rasa聊天机器人的教程。我正在使用视窗10,我是Docker的新手。 当我进入步骤时,它会在Dockerfile中运行,但会输出以下错误: 容器和linux。go:380:启动容器进程导致:exec:“/bin/bash”:stat/bin/bash:没有这样的文件或目录 我试着在其他StackOverflow响应中做了一些建议,比如更新ubunt

  • 问题内容: 构建docker时出现错误。 这是我的Dockerfile。 我运行一个命令: 你有什么想法吗? 问题答案: 这是因为您没有发布解决方案。 错误消息是不言自明的: 默认情况下,当您向ASP.NET Core Visual Studio 2017项目添加 Docker支持 时,它将创建一堆文件,其中一个文件用于处理构建过程。然后,当您通过Visual Studio生成项目时,将执行完整的

  • 问题内容: 我在Heroku上有一个Django应用。我在使用静态文件时遇到了一些问题(它们正在一个Heroku环境中加载,但没有在另一个环境中加载),因此我尝试了这里推荐的debug命令。 这是我的settings.py,与Heroku建议的一样: 无论我在Git存储库的根目录级别上是否实际上有一个目录“ static”(两种方式都对其进行了测试),都会收到错误消息。 有任何想法吗? 问题答案:

  • 问题内容: 我试图在Mac OS X EL Captain 10.11上使用Java 1.7 SDK和Hadoop2.7.1运行一个简单的单词计数MapReduce程序,并且在我的容器日志“ stderr” / bin / bash中得到以下错误消息:/ bin / java:无此文件或目录 应用日志 命令我正在运行 我的ENV变量是- 问题似乎是因为YARN对JAVA可执行文件使用的路径与您在O

  • 问题内容: 我已经花了将近两天的时间来讨论这个问题。 我是Docker和Docker Compose的新手,并尝试在运行Postgres和Go的EC2实例上运行我的映像。当我运行docker-compose up时,服务成功运行,但服务未成功运行。 当我尝试使用以下方法分别运行服务时: 一切都很好 然后运行: 我知道了 Dockerfile备用: docker-compose.yml 有趣的是,如