使用Dockerfile部署简单的应用
1、首先在centos安装uwsgi模块的时候可能会出现如下问题:<python.h>文件找不到,这是因为我们的一起前提环境没有安装好
1、搜索相应的前提环境 yum search python36-devel 2、 搜索出来的包进行安装 yum install python36-devel.x86_64
2、基于最基础的centos系统构建,基础的自定义基础镜像,Dockerfile如下:
FROM centos:7.6.1810 #安装 RUN set -ex \ # 预安装所需组件 && yum install -y wget tar libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make initscripts \ && yum install -y python36 \ && yum install -y epel-release \ && yum install -y python-pip # 基础环境配置 RUN set -ex \ # 修改系统时区为东八区 && rm -rf /etc/localtime \ && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && yum install -y vim \ # 安装定时任务组件 && yum -y install cronie # 支持中文 RUN yum install kde-l10n-Chinese -y RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 # 更新pip版本 RUN pip install --upgrade pip ENV LC_ALL zh_CN.UTF-8 yum install -y nginx
使用命令:docker build -t mycentos:2 .
3、已知基础镜像具有python、nginx了,下面我们写一个应用的Dockerfile文件
# 假如第二部的基础镜像是mycentos:2 FROM mycentos:2 EXPOSE 80 CMD nginx
使用命令:docker build -t my_nginx:2 . (这里的是在新的Dockerfile文件目录中敲命令)
创建好镜像后,使用如下命令创建容器: docker run -itd --name demo -p 8000:80 my_nginx:2 /bin/bash; 最后说明哈,如果docker的运行必须要又一个前台程序,否则你启动容器马上就退出了,所以这里使用了-it
4、如果使用 netstat -tlunp 命令查看网络状态,看看是否8000端口监听服务,使用 curl -i localhost:8000 看看是否有回显,没有的话可以进入容器来看看是否正常,最后如果外网无法访问8000端口,如果不能则看看是否防火墙关闭,阿里的策略开启,最后如果还是不行的话,使用netstat -tlunp命令看看8000端口是否是tcp6,如果是则:
1、 vim /usr/lib/sysctl.d/00-system.conf, 添加一行:net.ipv4.ip_forward=1 2、重启网络:systemctl restart network 3、重启docker:systemctl restart docker.service