docker sh脚本

脚本从 Windows 传输到 Linux导致脚本无法执行。

在配置web动态flag的时候发现一个问题:flag.sh无法执行在经过长时间的试错之后发现

如果脚本从 Windows 传输到 Linux,可能包含 Windows 格式的换行符(\r\n),这会导致脚本无法执行。

解决方法:

用下方语句检查如果看到 ^M 字符,说明文件是 Windows 格式

1
cat -v flag.sh

再用

1
dos2unix flag.sh

将其转换为 Unix 格式

那么根据此原理Dockerfile更改如下

1
2
3
4
5
6
7
8
FROM base_image_nginx_mysql_php_56

COPY src /var/www/html

RUN mv /var/www/html/flag.sh / && \
chmod +x /flag.sh
RUN dos2unix /flag.sh