如何在Dockerfile中安装mysql-server?

时间:2018-11-18 13:34:49

标签: mysql docker

我有一个复杂的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

我怎么了?

1 个答案:

答案 0 :(得分:0)

好像您已删除docker文件中最重要的部分。这是MySQL官方仓库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映像并将其安装在单独的容器中。然后您可以将数据库与其他应用程序连接。