Dockerfile创建Nginx服务

Dockerfile创建Nginx服务

使用CentOS镜像作为基础的系统

docker images centos
#REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
#docker.io/centos    latest              1e1148e4cc2c        3 weeks ago         202 MB

#进入contact目录,创建Dockerfile
cd /data/docker_file
touch Dockerfile
ls -l
#nginx-1.14.2.tar.gz
#Dockerfile

Dockerfile内容如下:

#基础镜像
FROM centos

#将nginx包放入/usr/local/src并自动解压
ADD nginx-1.14.2.tar.gz /usr/local/src

#安装依赖包
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel 
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel

#创建用户
RUN useradd -M -s /sbin/nologin nginx

#改变当前目录到nginx安装目录
WORKDIR /usr/local/src/nginx-1.14.2

#编译nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install

#EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。
#在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;
#另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
EXPOSE 80

#添加环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

#entrypoint的作用是,把整个container变成了一个可执行的文件,这样不能够通过替换CMD的方法来改变创建container的方式。
#但是可以通过参数传递的方法影响到container内部,每个Dockerfile只能够包含一个entrypoint
#当定义了entrypoint以后,CMD只能够作为参数进行传递
ENTRYPOINT ["nginx"]

#相当于在容器执行:nginx -g "daemon off;"
CMD ["-g","daemon off;"]

#挂载卷,默认会映射到外部的:/var/lib/docker/volumes/xxxxxx/_data
VOLUME ["/data"]

构建Image

#其中.表示当前Dockerfile的目录
docker build centos_nginx:v1 .
#构建完成后查看
docker images
#REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
#centos_nginx        v1                  0a5085401054        10 seconds ago      474 MB
#docker.io/centos    latest              1e1148e4cc2c        3 weeks ago         202 MB

运行container

docker run -d -p 85:80 centos_nginx:v1
#查看网站是否运行
http://xxx.xxx.xxx.xxx:85/
#进入容器
docker ps -l
#CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
#b3171e23b226        centos_nginx:v1     "nginx -g 'daemon ..."   6 minutes ago       Up 6 minutes        0.0.0.0:85->80/tcp   fervent_wozniak
docker exec -it b3171e23b226 /bin/bash
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值