【问题标题】:Restart MySQL in Dockerfile在 Dockerfile 中重启 MySQL
【发布时间】:2018-04-04 13:06:53
【问题描述】:

命令:

RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
RUN service mysql restart
RUN mysql -u root -e "create database test"

MySQL 无法重启:

* Stopping MySQL database server mysqld
 ...done.
* Starting MySQL database server mysqld
 ...fail!

我的想法是,如果我将映像作为容器运行并在那里重新启动它,那很好,它会重新启动,但不是在这里。我基本上想创建一个有数据库的图像。

有什么想法吗?

【问题讨论】:

  • 使用入口点代替运行
  • 我是 docker 新手,可以举个例子吗?
  • 为什么不用官方的mysql docker镜像?
  • 因为我基本上是在尝试安装一个CMS,所以我需要apache mysql和一些扩展。我正在考虑使用 docker 文件,所以如果我想更改 php 版本或 cms 版本,我可以简单地创建一个图像。有没有更好的方法来实现这一目标?

标签: mysql apache docker dockerfile


【解决方案1】:

如果您使用的是 Dockerfile,那么您应该将所有安装操作放在 RUN 中,并将所有执行放在 ENTRYPOINT 部分。

例如,在您的情况下,您可以使用以下说明:

RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
ENTRYPOINT service mysql start && bash

本指南应该可以帮助您https://ollyxar.com/blog/docker-phpstorm-windows

【讨论】:

  • 如果我生成没有入口点的 docker 映像,我会像这样运行它: docker run --name example1 -i -d -p 127.0.0.1:80:80 myimage (这样我可以去我的浏览器并查看 apache 并在浏览器中进行交互)如果我在尝试使用相同命令将图像作为容器运行时使用 ENTRYPOINT,则容器会自动死亡我如何在后台运行它并仍然执行脚本/命令入口点?
  • 您可以使用 docker exec -it container_name bash 登录特定容器
  • @johnnyshrewd 显然你必须在 exec 之前运行容器
猜你喜欢
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 2017-02-04
  • 2021-01-17
  • 2017-03-14
  • 2021-10-26
  • 1970-01-01
相关资源
最近更新 更多