Docker镜像化部署
1.安装docker
[docker桌面版下载](https://docs.docker.com/get-docker/)
选择合适的系统安装包下载安装。
2.运行示例应用
#从dockerhub拉取镜像
git clone https://github.com/docker/welcome-to-docker
#配置dockerfile(后面会单独说明dokerfile配置)
#利用镜像部署容器
docker build -t welcome-to-docker .
3.利用Docker Desktop运行首个项目
这里我们打开桌面图形化窗口操作,找到images镜像管理页面,点击action,同时设置开放端口(任意未占用端口,如:8080)。
此时基于docker的容器化项目已经在本地开启
打开浏览器输入:http://localhost:8080 访问
4.dockerfile配置规则
我们需要自行配置dockerfile,这一步是项目的关键,dockerfile文件的配置规则
同yaml文件类似
原理:
docker通过dockerfile的配置关系,可以找到对应的镜像资源自动构建镜像。
类似一种映射关系。
#syntax=docker/dockerfile:1
FROM ubuntu:18.04
COPY . /app
RUN make /app
CMD python /app/app.py
每条指令创建一层:
FROM从 Docker 镜像创建一个层ubuntu:18.04。
COPY从 Docker 客户端的当前目录添加文件。
RUN使用构建您的应用程序make。
CMD指定要在容器中运行的命令。
dockerfile配置语法简要描述
Dockerfile 是一种用于构建 Docker 镜像的文本文件,它包含了用于创建镜像的所有指令和配置。Dockerfile 遵循特定的语法和关键字,以下是一些简要的描述:
-
注释:使用
#
符号表示注释,可以用于解释代码或添加其他信息。 -
FROM:表示基础镜像,所有后续操作都基于此镜像。例如:
FROM ubuntu:18.04
。 -
RUN:表示在构建镜像过程中执行命令。例如:
RUN apt-get update && apt-get install -y nginx
。 -
CMD:表示容器启动时默认执行的命令。例如:
CMD ["nginx", "-g", "daemon off;"]
。如果有多个 CMD 指令,仅最后一个会生效。 -
ENTRYPOINT:表示容器启动时默认执行的命令,与 CMD 类似,但允许用户覆盖。例如:
ENTRYPOINT ["nginx"]
。 -
COPY:表示将本地文件或目录复制到镜像中。例如:
COPY ./app /app
。 -
ADD:与 COPY 类似,但支持远程 URL 和解压缩。例如:
ADD https://example.com/app.tar.gz /app
。 -
WORKDIR:表示设置镜像中的工作目录。例如:
WORKDIR /app
。 -
ENV:表示设置环境变量。例如:
ENV NODE_ENV production
。 -
EXPOSE:表示声明容器运行时监听的端口。例如:
EXPOSE 80
。 -
USER:表示设置后续 RUN、CMD 和 ENTRYPOINT 指令运行时的用户。例如:
USER nginx
。 -
VOLUME:表示声明 Docker 容器中的持久化存储卷。例如:
VOLUME ["/data"]
。 -
ARG:表示定义构建参数,可以在构建时传递给 Dockerfile。例如:
ARG NODE_ENV
。 -
ONBUILD:表示在子镜像中执行操作。例如:
ONBUILD RUN npm install
。
这些关键字和语法可以组合使用,以创建定制的 Docker 镜像。以下是一个简单的 Dockerfile 示例:
# 基础镜像
FROM node:14
# 设置工作目录
WORKDIR /app
# 复制 package.json 文件
COPY package.json .
# 安装依赖
RUN npm install
# 复制应用程序代码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动应用程序
CMD ["npm", "start"]