使用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

  

 

 

posted @ 2020-05-17 22:51  独角兕大王  阅读(718)  评论(0编辑  收藏  举报