容器启动不了,折腾了一下午,docker 脚本注意点

1、事件回放

下午的的时候同事说我的项目容器启动不了,一直报错。

项目是一个多模块项目,其他的模块都可以打包成功运行,只有一个特殊的模块怎么都不成功。

在他本地看了一番之后也没发现问题,主要看了Dockerfile 和 start.sh,打包和运行最重要的也就这两个文件。

之后让把start.sh 脚本发给我,我本地试图去打包,发现了脚本有个问题#!/bin/bash 这里比我原来的脚本里多了一个!,修改了下,发现启动成功了,然后提交代码,比对发现改动的地方是脚本的换行符 CRLF 和 LF的区别。

2、原因

改动之后修复了问题属于误打误撞,将脚本的换行符改了。

使用sh命令运行脚本,发现换行符是CRLF,会拆分成CR 和LF ,LF是换行 CR作为命令执行,报 command not found,而实际上报错的行是空行,换行符是CRLF。

idea 中右下角可以手动切换换行符

 

3、这里学习了下#!/bin/bash

#!/bin/bash 的作用是:用于指定默认情况下运行指定脚本的解释器

当脚本以 #!/bin/bash 开头时,内核就知道用 /bin/bash 这个可执行文件来解释并运行这个脚本。

既然是指定一个解释器,那么这个开头就可以根据你指定的解释器有多种不同写法了,比如:

#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f

上边每一个脚本头的行都指定了一个命令解释器,注意:#! 后边给出的路径名必须是正确的,否则将会出现一个错误消息,通常是"Command not found"

其中/bin/sh不指向/bin/bash(和其中一些/bin/bash可能根本不存在)是:

现代Debian和Ubuntu系统,其符号链接sh 到 dash默认

在Unix和Linux环境下,以#!开头的行称为shebang,这个标记告诉系统下一步该如何执行这个脚本文件。

#!/bin/bash就表示这个脚本应该使用Bash(Bourne Again SHell)解释器执行。

这里的/bin/bash是Bash解释器的常用路径。

有时,你也可能会看到#!/usr/bin/env bash,这个表达式通过寻找环境变量PATH中的bash来确定bash解释器的位置。

4、如何使用#!/bin/bash

创建一个Bash脚本通常很简单。首先,你需要在脚本的首行写上#!/bin/bash,然后写上你的脚本命令。例如:

#!/bin/bash
echo "Hello, world!"

在上面的脚本中,我们首先指定了这是一个Bash脚本,然后脚本的命令是输出”Hello, world!”。

在创建了脚本文件后,你还需要给它添加执行权限,这可以使用chmod命令完成:

chmod +x your-script.sh

然后,你就可以运行你的脚本了:

./your-script.sh

相关推荐

  1. 如何在Docker容器启动时自动运行脚本

    2023-12-14 11:06:01       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-14 11:06:01       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-14 11:06:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-14 11:06:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-14 11:06:01       18 阅读

热门阅读

  1. 什么是DNS解析?DNS解析的过程是什么样的?

    2023-12-14 11:06:01       52 阅读
  2. 装饰器模式

    2023-12-14 11:06:01       36 阅读
  3. 枚举+链对缓存实现以读取为主的请求接口

    2023-12-14 11:06:01       29 阅读
  4. 如何避免缓存穿透、缓存击穿、缓存雪崩?

    2023-12-14 11:06:01       41 阅读
  5. CUDA锁页内存的使用

    2023-12-14 11:06:01       36 阅读
  6. 跨线程保持上下文

    2023-12-14 11:06:01       37 阅读
  7. linux的命令和vi的使用

    2023-12-14 11:06:01       32 阅读
  8. xtu oj 1271 color

    2023-12-14 11:06:01       37 阅读
  9. Ceph入门到精通-TCP和UDP相关的指标

    2023-12-14 11:06:01       25 阅读
  10. ceph-deploy 遇到的使用问题

    2023-12-14 11:06:01       38 阅读
  11. 堆和栈的区别

    2023-12-14 11:06:01       33 阅读