在docker build中没有这样的文件或目录
我是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
它会被送入脚本,它将复制正确的文件。
不幸的是,我从来没有去运行图像,因为在构build步骤:
docker build -t app-name .
我得到的错误
脚本/ run.sh不是一个文件或目录
我不明白为什么我得到这个错误,我想这是来自天真的误解。 我做错了什么,我怎样才能使我的项目工作?
提前致谢。
看起来你想让scripts/run.sh
成为容器的一部分。 在这种情况下,在您尝试运行chmod之前,您需要将其复制到映像中。
FROM nginx COPY scripts/run.sh /scripts/run.sh RUN chmod +x /scripts/run.sh CMD ["/scripts/run.sh", APP_ENV]
这将复制./scripts/run.sh
(相对于您的构build目录)到/scripts/run.sh
的映像,以便您以后的RUN
和CMD
具有可用的path。
- 将'Docker Run'选项传递给Mesos / Marathon / Chronos
- System.IO.FileNotFoundException:无法加载文件或程序集“System.Net.Security,Version = 4.0.0.0
- 如何使Python Docker镜像成为OpenWhisk操作?
- Kafka Docker,docker-maven-plugin,Spring Boot
- 将Docker附加选项–sig-proxy = false设置为默认值
- 为什么我的Docker容器在SLES 12上的内存比Ubuntu要多两倍?
- 在Docker容器中运行Google Chrome Headless
- Docker:运行另一个兄弟Docker容器的Alias命令名称
- 启动已启动并停止的容器