如何制作一个Nginx镜像
1,从这里你将学到编写Dockerfile的4个重要指令RUN,EXPOSE,ADD,ENTRYPOINT
2,在Dockerfile中编写拷贝文件至容器的方法
3, 安装一个nginx server,并修改默认的站点路径
环境:CentOS7,Docker CE
1,Use below commands to prepare folders and testing files.
使用如下指令准备文件夹和测试文件
sudo mkdir -p firstnginx/test
sudo chmod -Rf firstnginx
cd firstnginx
echo this is the test1.html > test1.html
echo this is the test2.html > test/test2.html

2,Edit Dockerfile
编辑Dockerfile
sudo mkdir -p docker
sudo chmod -Rf docker
sudo vi docker/Dockerfile
Copy the the content below to the dockerfile:
#拷贝如下内容至Dockerfile
FROM centos:
MAINTAINER Liping<tlping@.com> #add nginx repo and install nginx package
RUN bash -c "rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm && \
yum install -y nginx.x86_64" #copy your customized nginx.conf to the container
ADD ./docker/nginx.conf /etc/nginx/nginx.conf
#create nginx log folder
RUN mkdir -p /etc/nginx/logs #copy full project to nginx web site folder
ADD ./ /var/www/html/public/ # publish the container port
EXPOSE #copy your shell script to the container
COPY ./docker/my-init.sh /usr/bin/my-init.sh
#set execution access right
RUN chmod +x /usr/bin/my-init.sh #refresh the the container folder files
RUN bash -c 'touch /var/www/html/*' #execute the initializaton script
ENTRYPOINT ["my-init.sh"]
3,Edit nginx.conf file ,we need change the default website location of nginxserver
sudo vi docker/nginx.conf
Copy below content to the nginx.conf and Save.
#拷贝如下内容至nginx.conf 并且保存
user nginx;
worker_processes 1; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on; server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main;
set $root "/var/www/html/public";
root $root;
location / {
root $root;
index index.html index.htm index.php l.php; try_files $uri /index.php$uri; } error_log /var/www/html/err.txt error;
#error_page 404 /404.html; error_page 500 502 503 504 /50x.html;
location = /50x.html {
root "/var/www/html";
} location ~ \.php(.*)$ {
root $root;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params; } }
#this statement must be put as the last line
include /etc/nginx/conf.d/*.conf; }
4,edit my-init.sh file
编辑my-init.sh
sudo vi docker/my-init.sh
copy the content below to the file and save(拷贝如下内容至文件并保存)
#!/bin/sh echo 'start nginx message now'
service nginx start
echo 'finish'
read
after you finish all above ,your current folder structure should be like this,
在你完成所有以上操作后,当前文件夹结构如下,

5,build the dockerfile(编译Dockerfile)
sudo docker build -t firstnginx -f docker/Dockerfile .


6,run the image to start a container(运行Docker镜像以启动容器)
sudo docker run -td --name first_nginx -p : firstnginx

7,
sudo docker ps -a | grep first_nginx

8,
Verfiy the test1.html and test/test2.html
Open browser
http://localhost:8080/test1.html
http://localhost:8080/test/test2.html
here use your docker host ip address to replace sys.beserp.com
打开浏览器验证test1.html, test/test2.html文件是否可以被正常访问


The nginx container is working!!
Nginx 运行起来了!
文章版权归属千分网络科技(重庆)有限公司
如何制作一个Nginx镜像的更多相关文章
- 【URLOS应用开发基础】10分钟制作一个nginx静态网站环境应用
URLOS开发者功能已上线有一段时间了,目前通过部分开发者的使用体验来看,不得不说URLOS在服务器软件开发效率方面确实有着得天独厚的优势,凭借docker容器技术与其良好的应用生态环境,URLOS必 ...
- 制作一个docker镜像:mysql-8-x64-linux
因为个人学习需要,为软件系统的虚拟容器化,以下将mysql制作为docker镜像,并记录下详细步骤. 欢迎大家学习交流和转载,同时写作不易,如果各位觉得不错,请点赞支持. 备注:以下代码和文章,欢迎复 ...
- Docker下制作一个容器镜像
操作过程描述: (1)先基于centos的镜像启动一个centos容器 (2)在这个容器中安装nginx (3)然后把这个已经安装了nginx的容器制作成一个docker的镜像 操作:docker c ...
- vagrant package制作一个box镜像
1.进入virtualbox安装目录,查看虚拟机的名称(第一列为虚拟机名称) # vboxmanage list vms 2. vagrant package 打包命令 vagrant packag ...
- 使用Dockerfile创建一个tomcat镜像,并运行一个简单war包
docker已经看了有一段时间了,对镜像和容器也有了一个大致了解,参考书上的例子制作一个tomcat镜像,并简单运行一个HelloWorld.war 1.首先下载linux环境的tomcat和jdk, ...
- Docker: docker 启动一个Nginx容器
本文演示从官方镜像仓库拉取一个nginx镜像并启动docker run -d –p 8800:80 nginx (同一个镜像,可以启动N个容器, 比如说,一个nginx服务,可以在这个docker主机 ...
- docker学习之路-nginx镜像(翻译)
本篇来自https://hub.docker.com/_/nginx/?tab=description 它是docker hub上nginx的官方网站,上面有关于nginx的使用描述等.从这里你可以找 ...
- 最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像
什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建. 下面通过一个具体的例子来学习d ...
- Docker 制作Nginx镜像
参考文章:https://www.jianshu.com/p/dc4cd0547d1e 镜像的制作方式有两种,一种是下载别人的镜像之后再制作成自己的镜像,一种是从头开始制作自己的镜像 第一种,下载别人 ...
随机推荐
- CodeForces 601B Lipshitz Sequence
Lipshitz Sequence 题解: 可以通过观察得到,对于任意一个区间来说, 只有相邻的2个点的差值才会是区间的最大值. 具体观察方法,可以用数学分析, 我是通过画图得到的. 那么基于上面的观 ...
- codeforces 807 D. Dynamic Problem Scoring(贪心+思维)
题目链接:http://codeforces.com/contest/807/problem/D 题意:对于动态计分的 Codeforces Round ,已知每题的 score 是根据 Round ...
- @override 重写 与重载
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现.重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多 ...
- mysql之innodb-锁
本篇主要根据innodb存储引擎的锁进行阐述,包括分类,算法,以及锁的一些问题 一.锁的概述 为了保证最大程度的利用数据库的并发访问,又要确保每个用户能以一致的方式读取和修改数据,为此锁就派上了用场, ...
- 013 turtle程序语法元素分析
目录 一.概述 二.库引用与import 2.1 库引用 2.2 使用from和import保留字共同完成库引用 2.3 两种库引用方法比较 2.4 使用import和as保留字共同完成库引用 三.t ...
- spring boot发送其他邮件
前面已经讲了使用springboot采用常规的javaweb方式发送邮件和使用spring模板发送邮件.但是发送的都是文本文件,现在来说一下使用spring模板发送一些其他的邮件. 1.pom.xml ...
- 前后端分类状态下SpringSecurity的玩法
前后端分离状态下,后端SpringSecurity该如何变动呢? 如何变动取决于前后端分离状态下,前后端交互的特点,纯json交互,闲言少叙,上干货 主配置类 @Configuration @Enab ...
- 关于git远程被覆盖的问题
有同事A和B,git远程版本为A0,两个人的本地项目已经跟远程同步.同事A先向git提交了3次,A1.A2.A3.git远程版本为A0.A1.A2.A3.同事B也向git提交了1次B1,但是同事B提交 ...
- android- 对话框中弹出edittext 不能调出输入法
最近项目中用到 dialog弹出对话框功能, 弹出后输入 密码, 本以为这是一个很简单问题,但是做好发现Edittext 无法调出输入法. 解决方法,我也是百度找到的 . 记录一下,便于下次使用: f ...
- .Net基础篇_学习笔记_第七天_Continue关键字的用法
Continue: 立即结束本次循环,判断循环条件: 如果成立,则进行下一次循环,否则退出循环. Continue和break的区别: 遇到break,循环不继续. 遇到continue,本次循环也不 ...