【运维】Dockerfile的使用

    科技2026-02-10  16

    1.Dockerfile

    可以把Dockerfile理解成一个脚本,不过是可以在这个脚本文件里使用一些特定的命令(关键字)完成一些自动化的任务 如果不用Dockerfile创建一个自定义的镜像,大概步骤是:

    1.找一个镜像,2.运行成一个容器3.进入容器4.做各种操作和配置5.提交成一个新的docker容器

    如果我们把这些步骤都写进一个文件里,然后让docker自己去实现就显得方便很多,所以就有了Dockerfile

    2.准则和命令

    我们在使用Dockerfile之前最好先了解一些原则

    “Dockerfile”这个文件名是固定的,大小写敏感,首字母大写尽量把Dockerfile放在一个空目录中,以防干扰每个容器尽量只实现单一功能,不适合集成太多Dockerfile里的命令越少越好

    常用命令

    命令说明FROM指定镜像文件MAINTAINER维护者的信息RUN执行命令EXPOSE对外暴露的端口ADD复制文件到容器中,若是压缩文件会自动解压COPY复制文件到容器中,若是压缩文件不会自动解压WORKDIR改变工作目录ENTRYPOINT运行容器时执行的指令(自启动)

    3.举例

    3.1 准备文件

    在/data/路径下新建一个空文件夹base,把项目需要用到的其他文件都复制到此目录下

    3.2 编写Dockerfile

    在base文件夹里新建一个Dockerfile文件,编写内容如下

    Dockerfile

    # 选择基础镜像 FROM ubuntu:18.04 # 作者 MAINTAINER pan RUN apt-get update -y RUN apt-get install nginx -y --allow-unauthenticated RUN apt-get install python3-pip -y # 把工程文件上传容器 ADD front_end_pc.tar.gz /data/ ADD meiduo_mall_admin.tar.gz /data/ ADD meiduo_mall.tar.gz /data/ # 切换到美多工程目录,并且安装依赖 WORKDIR /data/meiduo_mall/ RUN pip3 install -r requirements.txt # 复制配置文件到容器中 COPY 8080.conf /etc/nginx/conf.d/ COPY 8081.conf /etc/nginx/conf.d/ COPY 8000.conf /etc/nginx/conf.d/ # 设置环境变量;作用:指定系统语言为UTF-8;如果不设置,uwsgi运行无法处理中文语言 ENV LC_ALL="zh_CN.utf8" # 容器开放端口为8080和8081 EXPOSE 8080 8081 # 发送容器启动脚本 COPY command.sh /data # 切换容器目录 WORKDIR /data # 指定容器运行的启动指令 ENTRYPOINT ["/bin/bash", "command.sh"]

    因为ENTRYPOINT命令只能执行一条指令,所以我们可以把想要执行的多条指令写进一个脚本文件里一起执行

    command.sh

    cd /data/meiduo_mall/ uwsgi --ini uwsgi.ini nginx -g "daemon off;"
    3.3 使用Dockerfile生成镜像

    当所有文件都准备好了,并且写好Dockerfile了,我们就可以使用它生成一个镜像

    docker image build -t meiduo ./
    3.4 运行镜像
    docker container run -d --name meiduo --network=host meiduo:latest
    3.5 使用浏览器访问
    Processed: 0.013, SQL: 9