首页 > 解决方案 > 如何在 Dockerfile 中安装 mysql-server?

问题描述

我有一个复杂Dockerfile的安装,而不仅仅是mysql-server我无法从现有mysql容器开始。

当删除所有多余的东西时,我得到了这个Dockerfile

FROM ubuntu:latest

ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_ROOT_USER=root
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get install -y mysql-server

RUN usermod -d /var/lib/mysql/ mysql
RUN service mysql start 

不幸的是,mysql不想开始:

 ---> 57a66bd64c2c
Step 8/9 : RUN usermod -d /var/lib/mysql/ mysql
 ---> Running in 596df248c2e4
 ---> ee78442bcc56
Step 9/9 : RUN service mysql start
 ---> Running in 0d9e5803cf33
 * Starting MySQL database server mysqld
   ...fail!
The command '/bin/sh -c service mysql start' returned a non-zero code: 1

我的错误是什么?

标签: mysqldocker

解决方案


看起来您已经删除了 docker 文件中最重要的部分。这是官方 MySQL repo Docker 文件。

FROM oraclelinux:7-slim
ENV PACKAGE_URL https://repo.mysql.com/yum/mysql-8.0-community/docker/x86_64/mysql-community-server-minimal-8.0.2-0.1.dmr.el7.x86_64.rpm

# Install server
RUN rpmkeys --import http://repo.mysql.com/RPM-GPG-KEY-mysql \
  && yum install -y $PACKAGE_URL \
  && yum install -y libpwquality \
  && rm -rf /var/cache/yum/*
RUN mkdir /docker-entrypoint-initdb.d

VOLUME /var/lib/mysql

COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

EXPOSE 3306 33060
CMD ["mysqld"]

您需要包含正确版本的正确来源才能从中提取图像。并公开正确的端口,分离出 MySQL 运行的卷。您的容器可能因此而失败。我会说从你的 dockerfile 中删除 MySQL 部分并运行容器的其余部分。使用官方的 mySQL 映像并将其安装在单独的容器中。然后您可以将数据库与其他应用程序连接起来。


推荐阅读