docker容器上的mysql安装

标签 mysql docker

我正在尝试将 mysql 运行到修改后的 ubuntu 镜像中,其中包括安装 Node.js 和使用以下 docker 文件安装基本 mysql

# Memcached

# use the ubuntu base image provided by dotCloud
FROM ubuntu/mysqlbase
MAINTAINER Hitesh

# make sure the package repository is up to dat//e
#RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
#RUN apt-get update

#RUN apt-get install -y mysql-client
#ENTRYPOINT ["wc", "-l"]
#ENTRYPOINT ["echo", "running"]
ENTRYPOINT mysqld_safe & sleep 10
#RUN mysql
RUN echo "[mysqld]"                       >/etc/mysql/conf.d/docker.cnf
RUN echo "bind-address   = 0.0.0.0"      >>/etc/mysql/conf.d/docker.cnf
RUN echo "innodb_flush_method = O_DSYNC" >>/etc/mysql/conf.d/docker.cnf
RUN echo "skip-name-resolve"             >>/etc/mysql/conf.d/docker.cnf
RUN echo "init_file = /etc/mysql/init"   >>/etc/mysql/conf.d/docker.cnf
RUN echo "GRANT ALL ON *.* TO root@'%'" >/etc/mysql/init

USER root

EXPOSE 3306

使用以下命令运行此服务器

sudo docker run -p 3306:13306 mysql/dockerfiletest

遇到以下错误

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

有人可以建议这里需要更改的内容吗?我想使用这个容器与其他容器链接,该容器基本上运行我的 node.js 应用程序。

最佳答案

更新:您应该检查暴露的端口号 - 在您的示例中是(曾经)memcached 的端口(11211)而不是 mysql 的端口(3306)。


无论如何,我认为您可能需要修改 Dockerfile - 删除入口点中不必要的 sleep :

ENTRYPOINT ["/usr/bin/mysqld_safe"]

那么你应该以这种方式启动你的容器(守护进程模式):

root@machine:/# docker run -d -p 3306:<host port> <image id>

关于docker容器上的mysql安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21670306/

相关文章:

docker - 用于生产的Dockerfile “right approach”是什么?

spring-boot - Spring Boot Docker - 连接到本地主机 :5432 refused

javascript - 如何获取 JS 提示框的值,然后将其传递给 PHP 并保存在数据库中?

mysql - 应用程序特定的 MySQL 表结构

import - 将 .sql 文件导入 MySQL 时出现错误 1064 (42000)

mysql - 维护一组对象以支持多个数据库供应商(MS SQL、ORACLE 等)

git - 使用 Shell 脚本为多个 Docker 容器执行 'git pull' 是一种好习惯吗?

docker - 如何实现Kubernetes POD到POD的通信?

linux - Jupyter Notebook URL 的 token 在 Ubuntu 上的 Docker 镜像中被截断

mysql - 当 flyway 进程崩溃时,Flyway 不处理隐式提交的语句