我有以下Dockerfile:
FROM ruby:2.3.3
ENV "GEM_HOME" "/home/gems"
ENV "BUNDLE_PATH" "/home/gems"
EXPOSE 3000
WORKDIR /home/webapp
CMD ["/home/webapp/startup.sh"]
startup.sh文件如下所示:
#!/bin/sh
bundle install
bundle exec rails server puma -b 0.0.0.0 -e production
使用这个Dockerfile,我在Docker Hub上构建了一个图像。 我在Azure Linux应用服务网站Docker容器设置中选择此图像。这里没问题。
通过FTP我在Linux App Service的/文件夹中上传我的Rails应用程序(位于文件夹webapp,此文件夹包含startup.sh文件)。 根据此页面上的评论:https://docs.microsoft.com/en-us/azure/app-service-web/app-service-linux-how-to-create-a-web-app应用服务的/映射到容器中的/ home。
但是,如果我通过浏览器访问它,我的webapp将不会显示。在
/LogFiles/docker/docker_***_err.log
它说:
standard_init_linux.go:178: exec user process caused "no such file or directory"
我想要实现的是我的应用数据和宝石在容器图像之外。 我用我的本地mac成功测试了图像:
docker run -it -p 8888:3000 -v /Users/***/Desktop/ms:/home xyz/rubyimage
ms文件夹包含文件夹webapp。
答案 0 :(得分:2)
我的猜测是start.sh中的#!/ bin / sh会导致麻烦。尝试将#!/ bin / bash放在那里。
答案 1 :(得分:0)
我在Windows计算机上遇到了这个问题,这是因为我的“ entrypoint.sh”文件中第一行的行尾是
#!/bin/bash
我使用的是Visual Studio代码,并通过将以“ CRLF”结尾的行更改为“ LF”来解决此问题: