我是一名 Docker 初学者,正在试图将一个应用程序迁移到 Docker 上。基本上,在启动时,该应用程序需要执行一些与环境相关的工作,这些工作已经封装在一个脚本中。
我的应用程序长这样:
Dockerfile
scripts/run.sh
build-development/stuff
build-production/stuff
这里是我的Dockerfile:
FROM nginx
RUN chmod +x scripts/run.sh
CMD ["scripts/run.sh", APP_ENV]
EXPOSE 80
这里是 scripts/run.sh:
#!/bin/bash
mkdir dist
chmod -R 777 dist
if [ $1 == "development" ]
then
cp -R build-development/. /usr/share/nginx/html
fi
if [ $1 == "stage" ]
then
cp -R build-production/. /usr/share/nginx/html
sed -i 's/production/stage/g' dist/index.html
fi
if [ $1 == "production" ]
then
cp -R build-production/. /usr/share/nginx/html
fi
我的想法是这样运行图像:
docker run -e APP_ENV=development app-name
将被输入到脚本中,该脚本将复制正确的文件。
不幸的是,在构建步骤期间,我从未成功运行该映像:
docker build -t app-name .
我收到了关于“scripts/run.sh 不是文件或目录”的错误信息。我不理解为什么会出现这个错误,我猜测这是由于我的一些天真的误解所导致的。请问我做错了什么,如何使我的项目正常运行?
谢谢您提前的帮助。