【发布时间】:2021-08-04 14:42:06
【问题描述】:
我有 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 && \
setcap cap_ipc_lock= /usr/bin/vault
COPY run.sh ./
CMD ./run.sh
还有我的 run.sh 文件
#!/bin/bash
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..."
当我运行 docker 时我遇到了问题 -
/bin/sh: 1: ./run.sh: 未找到
如果我替换
CMD ./run.sh
开
运行 chmod +x run.sh
容器运行没有问题,但脚本不起作用,因为我在终端回显命令中看不到
【问题讨论】:
-
用
RUN替换CMD没有任何意义——这两个命令做的事情非常不同。CMD表示“在容器启动时运行此命令”,而RUN表示“现在在构建映像时运行此命令”。 -
WORKDIR是什么?您是否尝试在 CMD 中给出run.sh的绝对路径?