繁体   English   中英

错误:命令'/bin/sh 返回非零代码:1

[英]Error : The command '/bin/sh returned a non-zero code: 1

当我试图通过运行由我的 ubuntu 16.04 中的前一个团队编写的脚本来构建我的一个项目时

sudo ./build

我收到错误:

Step 8/24 : RUN     service mysql start
 ---> Running in 3djjk653642d
 * Starting MySQL database server mysqld
 ...fail!
The command '/bin/sh -c service mysql start' returned a non-zero code: 1

我的 Dockerfile 看起来像:

COPY        schema.sql /tmp/schema.sql
### User with ALL accesses (winter/toor)
RUN     service mysql start
RUN     mysql < /tmp/schema.sql
RUN     mysql -e "CREATE USER 'winter'@'%' IDENTIFIED BY 'toor'"
RUN     service mysql start && mysql -e "GRANT ALL ON its.* TO 'winter'@'%'"

请问,有什么帮助吗?

Dockerfile中的RUN语句用于运行将对文件系统产生一定影响的命令,然后将其保存在另一层中。

启动这样的服务是不正常的,因为内存(服务正在运行的地方)的状态没有存储在映像中,它只能在正在运行的容器中运行。

进行此类操作的通常方法是编写一个bash脚本(称为start.sh或类似名称),将其复制到映像中,然后从ENTRYPOINT末尾的ENTRYPOINT / CMD行运行。 当在docker run ...命令中创建容器时将运行该命令

start.sh:

service mysql start
mysql < /tmp/schema.sql
mysql -e "CREATE USER 'winter'@'%' IDENTIFIED BY 'toor'"
service mysql start && mysql -e "GRANT ALL ON its.* TO 'winter'@'%'"

Dockerfile:

COPY        schema.sql /tmp/schema.sql
COPY        start.sh /
ENTRYPOINT  ["/start.sh"]

请在此处阅读有关ENTRYPOINTCMD之间的区别以及何时应分别使用的信息。

最好还是使用Docker Hub中的官方MySQL映像。 通过使用环境变量,您可能可以实现所需的全部功能。

这个 docker 文件帮助了我:

yum -y install nginx' returned a non-zero code: 1 what is the issue i have got error in dockerfile

FROM centos:7

MAINTAINER linuxtechlab

LABEL Remarks="This is a dockerfile example for Centos system"

RUN yum -y update
RUN yum -y install httpd
RUN yum clean all
RUN yum -y install nginx

EXPOSE 80

#ENV HOME /root
#WORKDIR /root
#ENTRYPOINT ["ping"]
#CMD ["google.com"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM