tie*_*111 6 build meteor docker
我正在尝试构建一个 docker 容器,但它似乎没有找到我的 start.sh。它将它复制到容器中,但不知何故不起作用。
这是我的 dockerfile:
FROM ubuntu:16.04
# Install Meteor
RUN apt-get update
RUN apt-get install -y curl
RUN curl https://install.meteor.com/ | sh
RUN meteor npm install --save highcharts
# Entypointscript
COPY start.sh /
RUN chmod u+x /start.sh
# Copy App
COPY /app /app
# UI Expose
EXPOSE 80
ENTRYPOINT /start.sh
Run Code Online (Sandbox Code Playgroud)
这是我的 start.sh:
#!/bin/bash
sleep 20
/app/meteor run
# don't exit
/usr/bin/tail -f /dev/null
Run Code Online (Sandbox Code Playgroud)
我也不确定 start.sh 中的流星运行命令。我如何告诉流星运行在特定目录中执行,而无法 cd 进入它?
我使用的是 Windows 10。我的meteor 应用程序位于\app\ 目录中,Dockerfile 和start.sh 位于与应用程序文件夹相同的目录中。
我使用以下命令构建容器: docker build -tmeteorapp 。
当我尝试使用运行时的错误:
docker run -p 80:80 --net docker-network --name 流星应用meteorapp
是:
/bin/sh: 1: /start.sh: 未找到
非常感谢!
小智 9
我也在 Windows 10 上运行,对我的修复是将行尾从 CR LF(windows)更改为 LF(Unix)。
我用 Notepad++ 做到了这一点,这使得这很容易,现在我可以构建图像。在 Notepad++ 的“编辑”菜单中,您有“EOL 转换”,完全符合您的需要。
事实证明我的文件没有任何问题。我在我的电脑上创建了一个新目录,创建了新文件并将 start.sh 和 Dockerfile 以及我的应用程序的内容复制到那里。错误消失了。这一定是一些严重的错误,我的朋友刚刚在我的电脑上运行的其他文件也遇到了同样的错误。
也许 Docker 和 Windows 10 存在一些问题。
编辑:无法为我的朋友解决这个问题,我又遇到了同样的问题。有人知道如何解决吗?
解决方案: 这是在 Windows 下创建的 start.sh 与 Linux 需要的不兼容。要解决此问题,请在复制 start.sh 后将其添加到 dockerfile 中:
运行 dos2unix /start.sh
如果没有安装 dos2unix,则必须先安装:
运行 apt-get install dos2unix
归档时间: |
|
查看次数: |
7978 次 |
最近记录: |