dockerfile制作python3.6+mysql5.6+redis 鏡像


制作此鏡像的目的是為了后面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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM