简体   繁体   中英

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

When I am trying to build one of my projects by running a script written by previous team in my ubuntu 16.04

sudo ./build

I am getting error :

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

My Dockerfile looks like:

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'@'%'"

Please ,any help ?

RUN statements in a Dockerfile are used to run a command which will have some effect on the filesystem, that is then saved in another layer.

It's not normal to start a service like this, as the state of the memory (where the service is running) is not stored in the image, it can only be running in a running container.

The normal way to do stuff like this would be to write a bash script, (called start.sh , or something similar), copy it into the image and then run from an ENTRYPOINT / CMD line at the end of the Dockerfile. This will be run when the container is created in a docker run ... command

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"]

Have a read here for some information on the difference between ENTRYPOINT & CMD and when each should be used.

Better still - use the official MySQL image from Docker hub . Through the use of environment variables, you could probably achieve all you require.

This docker file helped me:

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"]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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