bash - Docker-compose - Starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown
问题描述
My docker service swagger was building nicely up util today, when I performed docker system prune
in order built it all of my services from scratch again. Now this particular service, and only it, fails with the following error:
Building swagger
Step 1/10 : FROM nginx:1.15.8-perl
---> 7bb959be99b4
Step 2/10 : ENV SWAGGER_UI_VERSION 3.20.4
---> Running in 364ca6ef9b60
Removing intermediate container 364ca6ef9b60
---> 88aa04baa745
Step 3/10 : ENV URL **None**
---> Running in 3d48c38f7db0
Removing intermediate container 3d48c38f7db0
---> 76799da3d2d3
Step 4/10 : RUN apt-get update && apt-get install -y curl && curl -L https://github.com/swagger-api/swagger-ui/archive/v${SWAGGER_UI_VERSION}.tar.gz | tar -zxv -C /tmp && cp -R /tmp/swagger-ui-${SWAGGER_UI_VERSION}/dist/* /usr/share/nginx/html && rm -rf /tmp/*
---> Running in 6199b5dbdc9b
ERROR: Service 'swagger' failed to build: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown
Structure
docker-compose.yml
/
swagger/
Dockerfile-dev
start.sh
nginx.conf
swagger.json
Files
docker-compose.yml
swagger:
build:
context: ./services/swagger
dockerfile: Dockerfile-dev
volumes:
- './services/swagger/swagger.json:/usr/share/nginx/html/swagger.json'
ports:
- 3008:8080
environment:
- URL=swagger.json
depends_on:
- web
Dockerfile-dev
FROM nginx:1.15.8-perl
ENV SWAGGER_UI_VERSION 3.20.4
ENV URL **None**
RUN apt-get update \
&& apt-get install -y curl \
&& curl -L https://github.com/swagger-api/swagger-ui/archive/v${SWAGGER_UI_VERSION}.tar.gz | tar -zxv -C /tmp \
&& cp -R /tmp/swagger-ui-${SWAGGER_UI_VERSION}/dist/* /usr/share/nginx/html \
&& rm -rf /tmp/*
RUN rm /etc/nginx/conf.d/default.conf
COPY /nginx.conf /etc/nginx/conf.d
COPY swagger.json /usr/share/nginx/html/swagger.json
COPY start.sh /start.sh
RUN ["chmod", "+x", "/start.sh"]
CMD ["/start.sh"]
start.sh
#!/bin/bash
if [ $URL != "**None**" ]; then
sed -i -e 's@https://petstore.swagger.io/v2/swagger.json@'"$URL"'@g' /usr/share/nginx/html/index.html
fi
exec nginx -g 'daemon off;'
nginx.conf
server {
listen 8080;
root /usr/share/nginx/html/;
location / {
try_files $uri /index.html;
}
}
I don't what is happening.
Can anyone point me in the right direction here?
解决方案
推荐阅读
- drupal-content-types - 我怎样才能解决给定的问题,同时又不打扰drupal中的建站
- database - 在 Postgres 查询期间设置临时全局变量
- r - 如何修复 .Hub 中的错误(“AnnotationHub”,集线器,缓存,代理,localHub,...)
- mongodb - Trello 如何在没有原子事务的情况下将生成的操作从更新到 MongoDB 中的其他文档(板、卡)存储?
- html - 无法减少使用媒体查询联系表单的宽度
- mysql - 那个mysql表结构可以用于历史数据吗?
- javascript - 删除列
- angular - 如何在执行其他代码行之前等到异步函数完成
- javascript - 我怎样才能重新调用这个函数?没用过 ES6
- javascript - 如何将现有设计链接到现有 laravel 项目