在docker中为Alpine Linux安装MySQL

分析器

我仍然在docker的alpine上安装mysql时遇到问题。

我还需要openjdk:8u201-jdk-alpine3.9。

我的dockerfile:

FROM openjdk:8u201-jdk-alpine3.9
RUN apk update && \
    apk add mysql mysql-client && \
    rm -f /var/cache/apk/* && \
    addgroup mysql mysql && \
    mkdir run/mysqld && \
    touch /var/run/mysqld/mysqld.sock && \
    touch /var/run/mysqld/mysqld.pid && \
    chown -R mysql:mysql /var/run/mysqld/mysqld.sock && \
    chown -R mysql:mysql /var/run/mysqld/mysqld.pid && \
    chmod -R 644 /var/run/mysqld/mysqld.sock && \
    apk add openrc --no-cache

但是,在容器中:-没有mysql服务(只有mariadb,但这可能是阿尔卑斯山的标准情况)-/ etc / mysql目录中没有任何my.cnf文件

当我尝试mysql命令时,出现错误:

Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (111)

当我尝试mysql -h 127.0.0.1 -P 3306 -u root命令时,出现错误:

Can't connect to MySQL server on '127.0.0.1' (115)

本地主机也是如此。

卡利斯·贝克勒

首先-为什么要在该特定映像上安装mysql-server?我建议使用2个单独的容器-一个用于mysql数据库,一个用于使用openjdk映像开发的应用程序。

您可以简单地使用以下要点https://gist.github.com/karlisabele/d0bebe3d27fc44a57d1db9a9abdff45a创建一个设置,您的Java应用程序可以使用database(服务名)作为mysql服务器的主机名连接到mysql数据库

请参阅https://hub.docker.com/_/mysql以获取有关mysql映像的其他配置(您应定义MYSQL用户,密码,数据库名称等。)


更新

我更新了要点,并添加了mysql运行所需的环境变量...用您自己的qwerty值替换,您应该能够使用数据库中提供的用户名和密码通过Java:3306从Java应用程序访问数据库。环境变量

文件末尾的卷定义告诉docker daemon我们想在主机文件系统中的某处创建持久卷并mysql用作别名。因此,当我们定义数据库服务卷时,我们可以简单地使用mysql:/ var / lib / mysql,它实际上将安装docker在您的文件系统上创建的晦涩文件夹。每次启动服务时,这将使mysql数据库具有持久状态(因为它将从主机上装载数据),而您不必担心卷的实际位置

您可以通过运行查看所有卷 docker volumes ls

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章