制作此鏡像的目的是為了后面HttprunnerManager 的整個環境搭建。基礎鏡像是基於docker官方的python3.6。
已經生成好的鏡像地址:registry.cn-hangzhou.aliyuncs.com/hw_wei/py_mysql_redis:1.0
一、創建Dockerfile 文件,內容如下:

# 基礎鏡像 FROM silverlogic/python3.6 # 描述 MAINTAINER python3.6+mysql5.6+redis # 添加必要秘鑰,以便添加apt庫 archive.ubuntu.com RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 # 換中國源,其中archive.ubuntu.com用於安裝mysql RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak \ && echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list \ && echo "deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib" >>/etc/apt/sources.list \ && echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >>/etc/apt/sources.list \ && echo "deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib" >>/etc/apt/sources.list \ && echo "deb http://archive.ubuntu.com/ubuntu trusty universe" >>/etc/apt/sources.list \ && apt-get update # 安裝mysql5.6 RUN { \ echo mysql-server mysql-server/root_password password '123456'; \ echo mysql-server mysql-server/root_password_again password '123456'; \ } | debconf-set-selections \ && apt-get install -y mysql-server-5.6 mysql-client-5.6 # 裝redis RUN apt install -y redis-server # 啟動命令 ENTRYPOINT service mysql start && redis-server # 讓進程一直跑, 否則容器會exit
二、構建啟動鏡像
# 構建鏡像
sudo docker build -t python3.6-mysql-redis .

# 創建+啟動容器, 如果啟動不了, 需要調試並修改dockerfile或啟動腳本.需要外部連接的就用-p 暴露端口
sudo docker run -itd -p 3308:3306 --name py_mysql_redis py_mysql_redis
# 進入bash
sudo docker exec -it python3.6-mysql-redis bash
在容器里測試是否成功:
mysql -uroot -p123456 redis-cli python
三、遇到的問題:
數據庫端口暴露之后,在容器內部可以訪問,但是外部還是無法連接
報錯:host XXXX is not allowed to connect to this MySOL server

解決:
進到 docker 容器里面修改一下mysql賬號允許從遠程登錄就行,
#兩條命令如下:
#by 后面是密碼, 可自行修改。也是遠程登錄的密碼
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
#刷新配置
flush privileges;
四、其他:
在調試過程中,會用到的命令
# 啟動容器
sudo docker start python3.6-mysql-redis
# 關閉容器
sudo docker stop python3.6-mysql-redis
# 刪容器
sudo docker rm python3.6-mysql-redis
# 刪鏡像
sudo docker rmi python3.6-mysql-redis