美文网首页
自动部署Nginx容器,Mysql容器,Redis容器,Pyth

自动部署Nginx容器,Mysql容器,Redis容器,Pyth

作者: Zhaozn | 来源:发表于2018-06-01 14:37 被阅读0次

1、自动部署四个容器,分别为Nginx容器,Mysql容器,Redis容器,Python容器,一键运行配置
2、这是本人docker地址: hub.docker.com/r/zhaozn91

3、是用Dockerfile配置的,启动镜像自动运行里面/home/start.sh文件,可以在运行的时候替换
4、get_docker.sh 文件内容

# 更新源
apt-get update
# 安装docker
apt-get install -y docker.io
# 从我的docker拉去四个镜像,都是公共镜像,可以随便拉取
docker pull zhaozn91/mysql:latest
docker pull zhaozn91/redis:ubuntu
docker pull zhaozn91/python3.5:ubuntu
docker pull zhaozn91/nginx:ubuntu
# 初始化docker镜像
sh init_docker.sh

5、init_docker.sh 文件内容

# 关闭所有的容器
docker stop $(docker ps -a -q)
# 删除所有的容器
docker rm $(docker ps -a -q)
# 启动Mysql容器 -d(后台启动) -p 配置端口 -v 配置映射把服务器的文件映射到容器内(对于mysql来说使用相对路径把容器内的sql数据映射到服务器上)
# --name 取得别名  zhaozn91/mysql:latest 镜像名称 
docker run -d -p 3306:3306 -v docker_mysql:/var/lib/mysql --name=my_mysql zhaozn91/mysql:latest
# redis我没有配置把数据映射到本地路径,需要的可以按照mysql自己配置
docker run -d -p 6379:6379 --name=my_redis zhaozn91/redis:ubuntu
# python容器多出来一个 --link=--link=my_mysql:db 相当于把两个容器关联可以使python容器访问mysql容器,my_mysql就是自己命名的别名 db就是在python容器中自己为my_mysql取得别名, 在Python程序中把连接数据库host=db就可以了,redis相同操作
docker run -d -v /home/docker/init_python.sh:/home/start.sh -v /home/XViews2:/home/XViews2 --name=my_python --link=my_redis:redis --link=my_mysql:db zhaozn91/python3.5:ubuntu
# nginx容器
docker run -d -p 80:80 -v /home/xview/:/home/xview/ --name=my_nginx --link my_python:my_python zhaozn91/nginx:ubuntu

6、Mysql容器中没有创建数据库以及各种表结构,我是在执行python程序的时候判断mysql数据库是否有表结构,没有则创建数据库及对应表结构,但是也可以在启动mysql时候创建数据库及结构,可以-v 映射到容器内的/home/start.sh 进行配置替换
7、Redis容器没有配置密码,直接可以连接,要进行修改配置都可以映射替换/home/start.sh进行配置替换
8、Nginx容器,创建镜像的时候我已经把default文件进行拷贝了,把我需要的默认配置进行替换了,这个根据个人nginx配置,进行映射替换就好,容器内替换置/etc/nginx/sites-available/
9、Python容器,我自己也是映射的配置文件,配置如下:

# mysql容器内mysql可能还没有起来,所以默认睡10秒,保证mysql正常运行
sleep 10
# 查询数据库是否有这个tables
my_sql=$(mysql -h db -u root --password=密码 -N -e "SELECT COUNT(*)  FROM information_schema.TABLES  WHERE table_schema = 'tables名称'; ")
# 判断是否存在,存在则不创建数据库及相应表数据,不存则创建数据库及表结构
if [ $my_sql -eq 0 ]
then echo "CREATE DATABASE IF NOT EXISTS (tables名称) DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;USE mysql;GRANT ALL PRIVILEGES ON *.*TO 'root'@'%' IDENTIFIED BY '设置外部访问密码' WITH GRANT OPTION;FLUSH PRIVILEGES;" | mysql -h db -u root --password=密码
# 切换到自己映射python文件的目录下
cd /XXXX/XXXX/
# 我是初始化了数据库管理员权限,根据个人需要自己配置就好
python3 init_db_admin.py
echo '初始化数据库,创建超级管理员用户成功!'
fi

#rm -rf /usr/bin/celery
#ln -s /usr/local/python3/bin/celery /usr/bin/celery

# 删掉进程 celery
pkill celery
# 删掉进程 python3
pkill python3

# 运行自己程序就好
xxxxxxxx


# 添加前台运行,以保证容器不断开
tail -f /home/XViews2/log/info.log

10、目前还没有配置Uwsgi,过两天配置完会进行更新。

相关文章

  • 自动部署Nginx容器,Mysql容器,Redis容器,Pyth

    1、自动部署四个容器,分别为Nginx容器,Mysql容器,Redis容器,Python容器,一键运行配置2、这是...

  • 常用命令

    运行mysql实例(容器) 运行redis实例(容器) 运行nginx实例(容器) 运行php-fpm实例(容器)

  • Docker常用容器启动命令

    docker启动mysql容器 docker启动nginx容器 docker启动redis容器 docker启动p...

  • Docker compose(五)(转载)

    部署一个应用可能需要用到多个Docker容器,比如MySQL,Redis,Nginx等,单独的去管理每个容器可能会...

  • Mysql+PHP+Nginx 部署ecshop #docker

    准备 ecshop源码 images 权限 nginx.conf 部署容器 Mysql 打开mysql远程访问 P...

  • Docker-compose命令

    #构建建启动nignx容器(或 redis、mysql)docker-compose up -d nginx#登录...

  • Docker 容器命令

    运行容器 运行Redis容器: 容器列表 停止容器 停止Redis 启动容器 停止Redis 端口映射 删除容器 ...

  • 【云原生 • Docker】mysql、tomcat、nginx

    一、MySQL 部署 拉取 MySQL 镜像,此处选择的是 MySQL 5.7 版本; 创建容器,容器名称为 my...

  • mysql大数据迁移

    在使用Docker搭建环境时,分别创建多个容器,mysql,redis,web等。所有容器启动后发现web容器连接...

  • k8S与容器编排

    一、容器编排工具解决那些问题 1.自动化容器的部署和复制 随时扩展或收缩容器规模 容器分组Group,并且提供容器...

网友评论

      本文标题:自动部署Nginx容器,Mysql容器,Redis容器,Pyth

      本文链接:https://www.haomeiwen.com/subject/gqtksftx.html