通过 dockerfile 安装 redis 以及 mysql 记录
背景
- windowns docker toolbox
- 作为记录方便后续在 kubernetes 中安装
安装 mysql
- 检查 mysql 镜像版本 以及 dockerfile 中 支持的 env 参数
https://hub.docker.com/_/mysql
https://dev.mysql.com/doc/refman/8.0/en/environment-variables.html
https://github.com/mysql/mysql-docker/blob/mysql-server/8.0/Dockerfile - dockerfile 的写法
http://13blog.site/article/42
FROM mysql:8.0
#设置 pwd 8.0special
ENV MYSQL_PWD 123456
EXPOSE 8080
#设置容器启动时执行的命令
CMD service mysql start
- 运行 docker build 与 docker run 容器启动后立即关闭 , 开始排错
- 其中 CMD 中将 service mysqld start 写成了 mysql 导致 container 启动后之间关闭其中 CMD 中将 service mysqld start 写成了 mysql 导致 container 启动后之间关闭
- 依然立即关闭 , 再次排错
- 发现 CMD service mysqld start 这样的写法有问题 , 但是 <<spring Cloud 与 docker 微服务架构实战>> 里说 这个会在shell里运行 , 为什么会出错呢?暂时改成 CMD [“mysqld”] .
-
重新 build and run
-
连接数据库
使用 navicat premium 设定 ip 为 虚拟机 ip , 发现连接不上 , 因为没有暴露端口 , 改正
docker run -d -p 3306:3306 -p 33060:33060 mysqlimage:tag -
成功
安装 redis
-
docker pull redis:5.0
-
其官方 dockerhub 上的 dockerfile 样例
FROM redis:5.0
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ “redis-server”, “/usr/local/etc/redis/redis.conf” ] -
定义自己的 conf
#https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf
#后台
daemonize yes
# Specify the server verbosity level.
loglevel notice
# 等下外接 本地文件夹 docker run -v
logfile "/log/redis.log"
-
build
-
挂载一个 log 到 windows 的默认共享文件夹
docker run -d -p 6379:6379 -v /c/Users/dockerfileInwin/redis/log:/log wbf/redis:2.0docker run -d -p 6379:6379 -v /c/Users/dockerfileInwin/redis/log:/log wbf/redis:2.0 -
启动后还是自动关闭了 , 开始排错 , 发现 daemonize 是以后台形式进行服务 , 当时没反应过来, 改正成 no 后 即可.