我目前在我的本地(Windows 10)机器上拥有以下Docker设置,以运行一个MySQL 5.7容器:
builds/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"]
构建/启动脚本
#!/bin/sh
cp /etc/mysql/conf.d/temp/* /etc/mysql/conf.d/
/entrypoint.sh mysqld
docker-compose.yml
: docker-compose.ymlversion: '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文件,可以自定义绑定,允许从主机等处连接...
这个设置在我另一台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。