docker文件中的脚本未运行
我需要从Docker内部执行一个shell脚本。我在Docker或脚本方面不如我想的那么精通。该脚本无效,不会在屏幕上打印任何内容。我不相信有人叫它 我做错了什么 该脚本应作为entrypoint命令运行 剧本docker文件中的脚本未运行,docker,shell,next.js,Docker,Shell,Next.js,我需要从Docker内部执行一个shell脚本。我在Docker或脚本方面不如我想的那么精通。该脚本无效,不会在屏幕上打印任何内容。我不相信有人叫它 我做错了什么 该脚本应作为entrypoint命令运行 剧本 #!/usr/bin/env bash set -Ex function apply_path { echo "Check that we have ENVIRONMENT_VAR vars" test -n "$ENVIRONMENT_
#!/usr/bin/env bash
set -Ex
function apply_path {
echo "Check that we have ENVIRONMENT_VAR vars"
test -n "$ENVIRONMENT_VAR"
find /usr/src/app/.next \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i "s#NEXT_PUBLIC_ENVIRONMENT_VAR#$ENVIRONMENT_VAR#g"
}
apply_path
echo "Starting Nextjs"
exec "$@"
docker文件
ARG NODE_VERSION=14.4.0-alpine
###
# STAGE 1: Base
###
FROM node:$NODE_VERSION as base
ENV NODE_PATH=/src
WORKDIR $NODE_PATH
###
# STAGE 2: Build
###
FROM base as build
COPY package.json package-lock.json .npmrc ./
RUN npm i
COPY . ./
RUN NEXT_PUBLIC_ENVIRONMENT_VAR=BUILD npm run build
# Permisions to execute script
RUN ["chmod", "+x", "./entrypoint.sh"]
ENTRYPOINT ["./entrypoint.sh"]
###
# STAGE 3: Production
###
FROM node:$NODE_VERSION
ENV NODE_PATH=/src
ENV APP_PORT=3000
WORKDIR $NODE_PATH
COPY --from=build $NODE_PATH/.next ./.next
COPY --from=build $NODE_PATH/node_modules ./node_modules
COPY --from=build $NODE_PATH/src ./src
COPY --from=build $NODE_PATH/package.json ./
COPY --from=build $NODE_PATH/.babelrc ./
COPY --from=build $NODE_PATH/LICENSE ./
EXPOSE $APP_PORT
CMD npm start
当您有一个多阶段Docker构建时,其最终结果只是从最后的
from
行开始的结果。当您将该脚本设置为入口点时,它处于上一个构建阶段,无法使用ENTRYPOINT
(和CMD
)不在映像生成时运行,只有在最终运行生成的映像时才运行
解决此问题的最简单方法是将脚本直接复制到最终构建阶段:
#第三阶段:生产
来自节点:$node\u版本
...
复制entrypoint.sh。
入口点[“/”入口点.sh“]
CMD npm启动
这对运行文件有效。我还必须将bash添加到容器中。