mysql - 如何在 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
我的错误是什么?
解决方案
看起来您已经删除了 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 映像并将其安装在单独的容器中。然后您可以将数据库与其他应用程序连接起来。
推荐阅读
- css - 在 Chrome v90 中使用百分比时不显示线性渐变
- c - 5.10.0-kali7-amd64 中的 kallsyms_lookup_name 未定义错误
- reactjs - 反应原生:useState 没有正确更新
- api - 关于现在配置调用 rest API 到服务的架构疑问
- javascript - 当页面滚动到某个点时,CSS/JS 将类添加到 div
- javascript - 通过导航栏隐藏到同一页面
- c++ - How can I fix an assertion failure that states 'vector subscript out of range'
- postgresql - 架构公共的 Supabase 客户端权限被拒绝
- visual-studio - 无法安装神经核:在 spaCy 中使用神经网络的共指解析
- android - 特定文件部分的 Android Visualizer