dockerfile 构建生产环境镜像

  • dockerfile构建nginx镜像
  • dockerfile构建tomcat镜像
    • tomcat 的自动启动
  • 把Go代码基于dockerfile做成镜像
  • 把python代码基于dockerfile做成镜像

dockerfile构建nginx镜像

mkdir dockerfile
cd dockerfile/
#把Centos-vault-8.5.2111.repo传到这个目录下 可通过阿里云镜像站下载这个yum源,centos默认镜像源不更新已经无法使用了

编写dockerfile

cat >dockerfile<<EOF
FROM centos
MAINTAINER nginx
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
EOF

编写index文件

echo "hello nginx" >index.html

构建镜像

docker build -t="centos/nginx:v1" .

查看镜像是否构建成功:

docker images | grep nginx

基于刚才的镜像启动容器:

docker run -d  -p 80 --name html2 centos/nginx:v1

查看容器具体信息可按如下命令:

docker ps | grep html

查看容器里部署的nginx网站的内容:

curl http://192.168.40.10:49154

注意:ENTRYPOINT [“/usr/sbin/nginx”,“-g”,“daemon off;”]
表示容器运行时,自动启动容器里的nginx服务

dockerfile构建tomcat镜像

把apache-tomcat-8.0.26.tar.gz 和jdk-8u45-linux-x64.rpm和Centos-vault-8.5.2111.repo传到这个目录下
百度网盘链接:https://pan.baidu.com/s/1FFT8V-LKBXs3dSV7L8IHfA
提取码:as40

mkdir tomcat8
cd tomcat8
cat >dockerfile<<EOF
FROM centos
MAINTAINER tomcat
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
ADD jdk-8u45-linux-x64.rpm /usr/local/
ADD apache-tomcat-8.0.26.tar.gz /usr/local/
RUN cd /usr/local && rpm -ivh jdk-8u45-linux-x64.rpm
RUN mv /usr/local/apache-tomcat-8.0.26 /usr/local/tomcat8
EXPOSE 8080
EOF

开始构建镜像

docker build -t="tomcat8:v1" .

运行一个容器

docker run --name tomcat8  -itd -p 8080 tomcat8:v1

进入到容器

docker exec -it tomcat8  /bin/bash

启动tomcat

/usr/local/tomcat8/bin/startup.sh

查看进程,看看是否启动成功

ps -ef | grep tomcat

打开新的终端窗口,查看刚才创建的tomcat8这个容器的详细信息:

docker ps | grep tomcat

访问服务器加容器映射出来的端口

tomcat 的自动启动

刚才我们在构建tomcat镜像时候,基于镜像运行容器,但是需要进入到容器,手动启动tomcat服务,那如果想要启动容器,tomcat也自动起来,需要按照如下方法构建镜像:

cat >dockerfile1 <<EOF
FROM centos
MAINTAINER test
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
ADD jdk-8u45-linux-x64.rpm /usr/local/
ADD apache-tomcat-8.0.26.tar.gz /usr/local/
RUN cd /usr/local && rpm -ivh jdk-8u45-linux-x64.rpm
RUN mv /usr/local/apache-tomcat-8.0.26 /usr/local/tomcat8
ENTRYPOINT /usr/local/tomcat8/bin/startup.sh && tail -F /usr/local/tomcat8/logs/catalina.out
EXPOSE 8080
EOF

tomcat 的自动启动命令可以用 ENTRYPOINT [“/usr/local/tomcat8/bin/catalina.sh”, “run”]

docker build -f dockerfile1 -t="tomcat8:v2" .
docker run --name tomcat9  -itd -p 8080 tomcat8:v2 /bin/bash

把Go代码基于dockerfile做成镜像

linux机器安装go(我用的是centos7.9操作系统)

yum install go -y

创建源码文件:生产环境代码是开发人员写的,运维不用写

mkdir test
cd test/
cat >main.go <<EOF
package mainimport ("net/http""github.com/gin-gonic/gin"
)func statusOKHandler(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "success~welcome to study"})
}func versionHandler(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"version": "v1.1版本"})
}func main() {router := gin.New()router.Use(gin.Recovery())router.GET("/", statusOKHandler)router.GET("/version", versionHandler)router.Run(":8080")
}
EOF

Go mod初始化项目

go mod init test
go env -w GOPROXY=https://goproxy.cn,direct   #设置代理
go mod tidy
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o k8s-demo main.go  #构建源码

编写dockerfile文件

cat >Dockerfile<<EOF
FROM alpine
WORKDIR /data/app
ADD k8s-demo /data/app/
CMD ["/bin/sh","-c","./k8s-demo"]
EOF

构建镜像

docker build -t go/k8sdemo:v1 .

运行镜像

docker run -d --name go -p 30180:8080 go/k8sdemo:v1

访问go容器
可以在根物理机同网段的其他机器或者浏览器访问机器的ip:30180,就可以把请求代理到go容器了

把python代码基于dockerfile做成镜像

把hello-python.tar.gz压缩包上传到服务器的root下,手动解压
百度网盘链接:https://pan.baidu.com/s/1cL1lyvJSX0uD9lp0SYg-dA
提取码:r0ev

tar zxvf hello-python.tar.gz
cd /root/hello-python/app

备注:requirements.txt文件包含main.py所需的包列表,pip将使用它来安装Flask库。

cat >dockerfile <<EOF
FROM python:3.7
RUN mkdir /app
WORKDIR /app
ADD . /app/
RUN /usr/local/bin/python -m pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python","/app/main.py"]

备注:
这个文件是Docker用来构建镜像的一组指令。对于这个简单的应用程序,Docker将:
(1)从Docker Hub获取3.7版本的官方Python基本镜像。
(2)在镜像中,创建一个名为app的目录。
(3)将工作目录设置为新的app目录。
(4)将本地目录的内容复制到该新文件夹,并将其复制到镜像中。
(5)运行pip安装程序(就像我们前面做的那样),将需求拉入镜像中。
(6)通知Docker容器监听端口5000。
(7)配置启动命令,使其在容器启动时使用。

构建镜像

docker build  -t hello-python:v1 .

基于镜像运行python代码

docker run -d --name python -p 30050:5000  hello-python:v1

访问python容器
可以在根物理机同网段的其他机器或者浏览器访问机器的ip:30050,就可以把请求代理到python容器了

学习笔记五:dockerfile 构建生产环境镜像相关推荐

  1. Linux学习笔记五:arm-2009q3交叉编译环境安装、U盘拷贝文件到开发板

    目录 一.概述 二.arm-2009q3安装 三.编译测试 四.开发板运行 一.概述 现在已经完成PC端的虚拟机环境安装.完成了开发板镜像烧写.以测试的hello为例,PC端使用gcc hello.c ...

  2. 使用Dockerfile定制LNMP环境镜像

    使用Dockerfile定制LNMP环境镜像    LNMP是继LAMP之后的又一个非常流行的web框架,即Linux+Nginx+Mysql+PHP的网站架构方案.nginx相较于apache更轻量 ...

  3. 【AngularJs学习笔记五】AngularJS从构建项目开始

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  4. 华清远见fs4412开发板学习笔记(五)

    fs4412开发板学习笔记(五) 作业1: 输入10个整数,按从小到大的顺序输出(选择排序) 每轮排序在未排序的集合中找到(最小/最大),将找到的数与未排序的 第一个数交换位置. 5 4 3 2 1 ...

  5. Dockerfile 构建python环境

    Dockerfile 构建python环境 构建步骤 编写一个dockerfile文件 通过docker build构建文件的一个镜像 docker run 运行镜像 具体步骤 首先,创建目录 pyt ...

  6. ESP8266学习笔记(1)——搭建环境、编译烧写(NONOS SDK)

    RTOS SDK环境搭建参看 ESP8266学习笔记(17)--搭建环境.编译烧写(RTOS SDK) 一.搭建环境 1.1 ESP8266 SDK 入门指南 官网下载:https://www.esp ...

  7. 好程序员教程分析Vue学习笔记五

    好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...

  8. ESP32学习笔记(1)——搭建环境、编译烧写(Windows+VS Code)

    Espressif-IDE 环境搭建参看 ESP32学习笔记(50)--搭建环境.编译烧写(Windows+Espressif-IDE) 一.搭建环境 1.1 官方资料 ESP-IDF 编程指南 1. ...

  9. Python学习笔记五:控制语句

    Python学习笔记五:控制语句 Pycharm 开发环境的下载安装配置_项目管理 控制语句 Pycharm 开发环境的使用 Pycharm 下载和安装 激活和选择不同UI 风格 创建项目和初始化配置 ...

最新文章

  1. linux安装配置postgres及使用dblink
  2. ubuntu16.04:成功解决ubuntu16.04 忘记root密码
  3. python(numpy,pandas9)——pandas 导入导出数据
  4. SQLSERVER和ORACLE批量处理表名和字段名大写
  5. 疫情之下 SaaS 市场两极分化,SaaS 厂商如何突围严峻形势?
  6. VC++ Tab Control控件的使用
  7. titit 切入一个领域的方法总结 attilax这里,机器学习为例子
  8. 陕西中医药有计算机系吗,校内制度 - 陕西中医药大学信息化建设管理处
  9. android版开源绘图,Krita来到Android 适用于您的智能手机的最佳免费绘图应用程序...
  10. picker插件 vue 移动端_基于 vue 的 picker 组件 vue-awesome-picker
  11. NVIDIA JETSON NANO三个版本核心的对比
  12. ctfshow-29-170
  13. 我们公司放弃了微服务,重回单体架构
  14. linux下使用代理连接外网
  15. 林语堂告倒世界书局内幕
  16. Mysql系列之六(视图,事务,触发器等)
  17. 安装 glove_python
  18. 电脑桌面上的软件图标出现白板,怎么办?(均可以这么做)
  19. db2与mysql编目_DB2 数据库编目
  20. 深入人工智能之前,开发者需要学习的服务与框架

热门文章

  1. java fx eclice安装_安装e(fx)clipse到Eclipse (JavaFX工具)
  2. postgresql 数据库 alter table alter column set not null 的一些实践
  3. 使用screen命令
  4. [转载] Could not find module \atari_py\ale_interface\ale_c.dll (or one of its dependencies)
  5. HTML5给页面添加背景音乐
  6. CnOpenData中国各城市工商注册企业分年份企业性质企业数量统计(含新增,注销企业数量)
  7. mysql 多进程 分批_多线程分批处理数据
  8. BMZCTF [2020首届祥云杯]到点了
  9. vSAN支持大数据应用吗?
  10. 怎么在vs2010中显示代码的行数