使用 Dockerfile 自定义 Nginx 镜像
一般来说,自定义Nginx只需要把静态文件放到镜像里就可以了,不需要重写 CMD
与 ENTRYPOINT
。但是,如果的确需要在 Nginx 启动前执行一些操作,就需要重写 CMD
了,如果写成下边就样:
FROM nginx
COPY someshell.sh /
RUN chmod +x /someshell.sh
CMD someshell.sh && nginx -g daemon off;
就会得到个错误 nginx: invalid option: "off"
。网上很多报这种错误的,今天打镜像时恰巧碰到又忘了之前的作法了,索性记录下来,备忘以及帮助后来者。
提供两种类似的自定义 Nginx 镜像写法,一种放在 Dockerfile 里执行脚本 + 启动 Nginx,另一种是脚本里把所有的事都做完。
仅 Dockerfile 修改
FROM nginx:1.16
#省略复制前端的命令
COPY docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
CMD /docker-entrypoint.sh && nginx -g 'daemon off;'
没看错,只是在 daemon off;
前后加上 单引号。docker-entrypoint.sh 名称及内容均可自定义。
脚本中All in One
Dockerfile:
FROM nginx:1.16
#省略复制前端的命令
COPY docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
CMD /docker-entrypoint.sh
docker-entrypoint.sh:
#!/bin/bash
#做一些操作。。。
nginx -g 'daemon off;'
总结
问题主要出在 daemon off;
对于Nginx的参数而言必须是一个整体。
使用 Dockerfile 自定义 Nginx 镜像的更多相关文章
- 使用dockerfile构建nginx镜像
使用dockerfile构建nginx镜像 docker构建镜像的方法: commit.dockerfile 1.使用commit来构建镜像: commit是基于原有镜像基础上构建的镜像,使用此方 ...
- Dockerfile构建nginx镜像
Dockerfile构建nginx镜像 [root@bogon ~]# mkdir /opt/docker-file [root@bogon ~]# cd /opt/docker-file/ [roo ...
- 使用dockerfile构建nginx镜像 转
docker构建镜像的方法: commit.dockerfile 1.使用commit来构建镜像: commit是基于原有镜像基础上构建的镜像,使用此方法构建镜像的目的:保存镜像里的一些配置信 ...
- dockerfile 搭建nginx镜像
昨晚看了看dockerfile的内容,想自己玩一玩.折腾了一晚上,到今天才顺利构建出来(弱鸡如我~). 首先,我新建了一个文件夹,并且放进了nginx源码包,建立了一个Dockerfile. Do ...
- 编写Dockerfile自定义镜像
要求 编写一个Dockerfile自定义centos镜像,要求在容器内部可以使用vim和ifconfig命令,并且登入落脚点为/usr/local 编写Dockerfile FROM centos M ...
- Dockerfile书写介绍及构建ssh镜像、tomcat镜像、nginx镜像
=================================================================================================== ...
- 最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像
什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建. 下面通过一个具体的例子来学习d ...
- DOCKER 学习笔记2 认识dockerfile自定义镜像
Dockerfile 概念 Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数.库.资源配置.可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时 ...
- Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较
1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这 ...
随机推荐
- JIS-CTF_VulnUpload靶机
仅供个人娱乐 靶机信息 下载地址:https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 一.网卡设置 设置为NAT模式, 使用vi去修改/etc/ ...
- WanJetpack项目:用Jetpack实现玩Android,追求最官方的实现方式
项目简介 玩Android demo.用Jetpack MVVM开发架构.单Activity多Fragment项目设计,项目结构清晰,代码简洁优雅,追求最官方的实现方式.用到以下知识点: LiveDa ...
- SpringBoot - Bean validation 参数校验
目录 前言 常见注解 参数校验的应用 依赖 简单的参数校验示例 级联校验 @Validated 与 @Valid 自定义校验注解 前言 后台开发中对参数的校验是不可缺少的一个环节,为了解决如何优雅的对 ...
- Vulhub-Phpmyadmin 4.8.1远程文件包含漏洞
前言:Phpmyadmin是一个用PHP编写的免费软件工具,旨在处理Web上的MySQL管理. 该漏洞在index.php中,导致文件包含漏洞 漏洞环境框架搭建: cd vulhub-master/p ...
- RHCSA_DAY12
Linux软件包的分类 inghu 源码包 二进制包(RPM包) 源码包特点 源码包缺点:安装过程麻烦,需要用户手动编译,需要手动解决软件包的依赖关系 源码包优点:软件源代码开放,允许用户二次开发,安 ...
- 606页Android最新面试题含答案,助力成为offer收割机
如何才能通过一线互联网公司面试?相信这是很多人的疑惑,希望看完本篇文章能给大家一些启发. 下面是我花了将近一个月的时间整理的一份面试题库.这些面试题,包括我本人自己去面试遇到的,还有其他人员去面试遇到 ...
- Map的putAll方法验证
下面的程序验证了Map的putAll方法的行为特性,代码如下: import java.util.HashMap; public class Map_putAllTest { public stati ...
- DVWA-全等级文件包含
DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...
- WPS:利用数据透视表将数据按指定列进行分组求和
1.场景 如图所示:根据日期计算日期当天的总金额 2.利用数据透视表完成该操作 (1)选择金额列的某一格数据,点击上方插入--数据透视表 !!请确保表格第一行为表头 (2)在弹出的页面中直接点击&qu ...
- Windows内核基础知识-2-段描述符
Windows内核基础知识-2-段描述符 比如: ES 002B 0(FFFFFFFF) 意思就是es段寄存器,段选择子/段选择符 为002B, 起始地址base为0, 限制范围Limit地址最大能寻 ...