gpt4 book ai didi

在 docker 中为 alpine linux 安装 Mysql

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:52 34 4
gpt4 key购买 nike

我在 docker 的 alpine 上安装 mysql 仍然有问题。

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

我的 docker 文件:

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,但它可能是 alpine 的标准情况)-/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 值替换为您自己的值,您应该能够使用用户名和密码通过 database:3306 从 Java 应用程序访问数据库在环境变量中提供

文件末尾的卷定义告诉 docker 守护进程我们要在主机文件系统的某处创建一个持久卷,并使用 mysql 作为别名。因此,当我们定义数据库服务卷时,我们可以简单地使用 mysql:/var/lib/mysql ,它实际上会挂载 docker 在您的文件系统上创建的一个模糊文件夹。这将允许 mysql 数据库在您每次启动服务时都具有持久状态(因为它将从您的主机挂载数据)并且您不必担心卷的实际位置

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

关于在 docker 中为 alpine linux 安装 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56580412/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com