【问题标题】:Issue when I try to create a docker image [duplicate]当我尝试创建泊坞窗图像时出现问题 [重复]
【发布时间】:2017-05-01 09:55:26
【问题描述】:

我正在尝试使用 Docker 创建一个 mysql 映像,但它无法正常工作...

我的目标是从 Ubuntu Trusty 创建一个自定义的 MYSQL 映像。图像应该执行典型的脚本来根据通过命令行传递的变量来配置数据库,但是当我运行 'docker run -d -e MYSQL_ROOT=docker -e MYSQL_DATABASE=wp ... '脚本工作正常,但完成后,容器停止。

我尝试了 'nohup /usr/sbin/mysqld &' , exec '/usr/sbin/mysqld &' 但没有,守护进程死了。

我的 dockerfile 如下:

FROM ubuntu:trusty

ENV DEBIAN_FRONTEND noninteractive

RUN \
  apt-get update && \
  apt-get -y install mysql-server-5.6 supervisor --no-install-recommends && \
   apt-get -y clean && \
   apt-get -y autoclean && \
   rm -rf /var/lib/apt/lists/* 

RUN \
   ln -sf /dev/stderr /var/log/mysql/error.log && \
   sed -i 's/127.0.0.1/0.0.0.0/' /etc/mysql/my.cnf

COPY config.sh /

VOLUME ["/var/lib/mysql"]

EXPOSE 3306 

ENTRYPOINT ["/config.sh"]

还有脚本“config.sh”:

#!/bin/bash -x

/usr/sbin/mysqld &

sleep 5

if [ $MYSQL_ROOT_PASSWORD ]
  then
     mysql -u root -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('${MYSQL_ROOT_PASSWORD}') ;"
  else
    echo 'Error al establecer la contraseña de root.'
    exit 1
fi

if [ $MYSQL_DATABASE ]
  then
    mysql -u root -p${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE} ;"
  else
   echo 'Error al crear la base de datos.'
fi

if [ $MYSQL_USER ] && [ $MYSQL_PASSWORD ]
  then
    mysql -u root -p${MYSQL_ROOT_PASSWORD} -e "GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}' ; FLUSH PRIVILEGES ;"
   elif [ $MYSQL_USER ] 
      then
        mysql -u root -p${MYSQL_ROOT_PASSWORD} -e "GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_USER}' ; FLUSH PRIVILEGES ;"
   else
        echo 'No se pudo crear el usuario.'
fi

【问题讨论】:

    标签: mysql database bash docker containers


    【解决方案1】:

    这很可能是因为您执行命令的顺序。 您需要将 mysqld 守护程序放在前台,而您将其放在后台。

    只需在脚本末尾添加一些永远等待的内容:

    #!/bin/bash -x
    
    ## YOUR INIT CODE HERE
    ## ...
    ## ...
    
    tail -f /dev/null
    

    【讨论】:

      猜你喜欢
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-09-19
      相关资源
      最近更新 更多