镜像构建的Docker入口点脚本不正确

ogsagwnx  于 2024-01-06  发布在  Docker
关注(0)|答案(1)|浏览(138)

我正在为Angluar Web应用程序构建Docker-Image,在创建镜像时,我使用node-image作为基础构建Angular 绑定,然后将dist文件夹复制到nginx Web服务器。作为入口点,我使用shellscript将dist文件中的一些占位符替换为环境变量(API-Hostname等)。镜像构建时没有错误,但当我尝试运行包含该镜像的容器时,我得到以下错误:

  1. run.sh: 1: Syntax error: word unexpected (expecting "do")

字符串
我的Dockerfile:

  1. FROM node:16 AS build
  2. WORKDIR /app
  3. COPY package*.json ./
  4. COPY src ./src
  5. COPY angular.json ./
  6. COPY tsconfig.app.json ./
  7. COPY tsconfig.json ./
  8. RUN npm install
  9. RUN npm run build-docker
  10. FROM nginx
  11. COPY ./docker/nginx.conf /etc/nginx/nginx.conf
  12. COPY --from=build /app/dist/[PROJECT NAME] /usr/share/nginx/html
  13. COPY ./docker/run.sh ./run.sh
  14. ENTRYPOINT ["sh", "run.sh"]


run.sh脚本:

  1. for mainfile in $(ls /usr/share/nginx/html/main*.js);
  2. do
  3. envsubst '$HOST_NAME' < $mainfile > main.tmp;
  4. mv main.tmp $mainfile;
  5. done
  6. nginx -g 'daemon off;'


我找不到任何错误,在此配置,任何想法?

hwamh0ep

hwamh0ep1#

只是把答案贴在这里,让其他人在需要的时候找到。
问题是,我在run.sh文件中有一个codeon。在for循环的末尾。所以正确的脚本是:

  1. for mainfile in $(ls /usr/share/nginx/html/main*.js)
  2. do
  3. envsubst '$HOST_NAME' < $mainfile > main.tmp;
  4. mv main.tmp $mainfile;
  5. done
  6. nginx -g 'daemon off;'

字符串
感谢@DavidMaze的帮助!

相关问题