gpt4 book ai didi

mysql - Docker:$'\r':在 Windows 上找不到命令

转载 作者:可可西里 更新时间:2023-11-01 10:51:35 26 4
gpt4 key购买 nike

我目前正在使用以下 Docker 设置在我的本地 (Windows 10) 机器上运行 MySQL 5.7 容器:

构建/Dockerfile:

# Base image
FROM mysql:5.7

# Copy starting scripts file
COPY start.sh /root/start.sh

RUN sed -i 's/\r$//' /root/start.sh

# Run necessary services
CMD ["/bin/bash", "/root/start.sh"]

builds/start.sh

#!/bin/sh

cp /etc/mysql/conf.d/temp/* /etc/mysql/conf.d/

/entrypoint.sh mysqld

docker-compose.yml

version: '2'

services:
db:
build: ./builds
container_name: mysql1
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: "test2"
ports:
- "13306:3306"
volumes:
- ./containerdata:/etc/mysql/conf.d/temp

容器数据:....包含一个 MySQL my.cnf 文件来自定义绑定(bind),允许从主机等连接...

此设置在我的其他 Linux 机器上完美运行(当运行 docker-compose up 时),但在这台 Windows 机器上失败并出现以下错误:

mysql1 | /root/start.sh: line 2: $'\r': command not found
mysql1 | cp: cannot stat '/etc/mysql/conf.d/temp/*': No such file or directory
mysql1 | /root/start.sh: line 4: $'\r': command not found
: not foundntrypoint.sh: line 215: exec: mysqld
mysql1 exited with code 127

如您所见,我什至尝试使用“sed”来替换所有'\r'(即使当我用Notepad++打开start.sh文件时,行结尾已经是Unix-LF并且没有'\r').即使那样,这仍然会因上述错误而失败。

你能帮我解决这个问题吗?在此先感谢您的帮助。

编辑:我已经在 Dockerfile 中使用了“Linux 容器”,还尝试了 dos2unix 而不是 sed。

最佳答案

我遇到了同样的问题,我发现这个错误是由只有 windows 使用的字符引起的。要解决此错误,请使用 nano 或其他 linux 文件编辑器编写文件 shellscript。

如果你使用windows 10,你可以启动一个子系统linux编写 shellscript。

希望对你有帮助

关于mysql - Docker:$'\r':在 Windows 上找不到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51888625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com