之前的问题与https://stackoverflow.com/questions/77266768/yarn-command-not-found-after-successful-docker-build。它已修复,但我的问题与使用 shell 有关/bin/sh
。
以下是我想做的事情:使用yarn
并在镜像上安装它amazonlinux:2
。这是我的 Dockerfile:
FROM amazonlinux:2
RUN yum update -y && \
yum install -y tar curl gzip zip unzip aws-cli
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | sh && \
. ~/.nvm/nvm.sh && \
nvm install 14 && \
nvm alias default 14 && \
nvm use default && \
npm install -g yarn
USER root
COPY .bashrc /root/.bashrc
COPY entrypoint.sh /root/entrypoint.sh
RUN chmod +x /root/entrypoint.sh
ENTRYPOINT [ "/root/entrypoint.sh" ]
这是我的.bashrc
文件
#!/bin/sh
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
这是我的entrypoint.sh
#!/bin/sh
. /root/.bashrc
exec "$@"
我所得到的是,在尝试从 ECS 运行容器时, exec /root/entrypoint.sh: exec format error
并且Essential container in task exited
。
如何解决exec格式错误?