You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建Vault镜像启动时提示run.sh不存在且脚本不执行问题求助

错误原因说明

  1. 初始报错/bin/sh: 1: ./run.sh: not found通常由两个问题导致:
    • run.sh没有可执行权限,系统无法直接运行
    • 若你在Windows系统下编写run.sh,文件换行符为Windows格式的CRLF,Ubuntu系统无法识别脚本首行的#!/bin/bash声明,会将脚本判定为非可执行文件
  2. 把CMD ./run.sh替换为RUN chmod +x run.sh后脚本不执行,是因为RUN是镜像构建阶段执行的指令,仅在构建镜像时生效,不会作为容器启动后的运行命令。替换后镜像没有配置默认启动命令,容器启动后会运行Ubuntu基础镜像的默认bash进程,自然不会执行初始化脚本,也不会有对应输出。

具体修复步骤

步骤1:修正Dockerfile配置

修改后的Dockerfile内容如下:

FROM ubuntu:20.04
RUN apt-get update && apt-get install -y software-properties-common curl gnupg2 && \
  curl -fsSL https://apt.releases.hashicorp.com/gpg | apt-key add - && \
  apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \
  apt-get update && apt-get install -y \
  vault dos2unix && \
  setcap cap_ipc_lock= /usr/bin/vault

# 复制脚本到固定目录避免相对路径异常
COPY run.sh /usr/local/bin/
# 转换换行符+授予可执行权限
RUN dos2unix /usr/local/bin/run.sh && chmod +x /usr/local/bin/run.sh

# 配置容器启动命令
CMD ["/usr/local/bin/run.sh"]

步骤2:修复run.sh逻辑缺陷

原脚本没有启动Vault服务的步骤,直接执行vault status会一直失败,修改后的脚本如下:

#!/bin/bash

# 后台启动开发模式Vault服务,指定对应root token
vault server -dev -dev-root-token-id=vault-plaintext-root-token &
VAULT_PID=$!

VAULT_RETRIES=5
echo "Vault is starting..."
until vault status > /dev/null 2>&1 || [ "$VAULT_RETRIES" -eq 0 ]; do
        echo "Waiting for vault to start...: $((VAULT_RETRIES--))"
        sleep 1
done

echo "Authenticating to vault..."
vault login token=vault-plaintext-root-token

echo "Initializing vault..."
vault secrets enable -version=2 -path=my.secrets kv

echo "Adding entries..."
vault kv put my.secrets/dev username=test_user
vault kv put my.secrets/dev password=test_password

echo "Complete..."
# 将Vault进程切到前台,避免脚本执行完容器直接退出
wait $VAULT_PID

步骤3:启动容器验证

启动容器时不要加-d后台运行参数,直接执行以下命令即可看到完整的脚本输出:
docker run -it <你的镜像名称>


内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 02:15:02