手把手教你写Dockerfile以及测试
Dockerfile是什么?
dockerfile就是用来构建docker镜像的构建文件,命令参数脚本。
如何使用Dockerfile?
- 1、编写一个Dockerfile文件
- 2、docker build构建成
基础使用(此处罗列一些我们经常用到的)
# 指定依赖镜像版本,基于什么镜像,构建镜像,复制了这个镜像
FROM node:16-alpine
# 指定doker的环境变量,运行时一直生效,请注意,运行时
ENV NODE_ENV=${NODE_ENV}
# 构建参数,运行时无效,可以构建时候临时修改变量,请注意,构建时
ARG NODE_ENV=production
# 指定你的命令shell语句运行的目录,假如目前没有这个目录,它就会自动创建这个目录
WORKDIR /app
# 复制源文档到工作目录,将宿主机的文件拷贝到某路径下
COPY ./ /app # 也可以使用 ADD,但是COPY更好用,支持url
# 运行shell命令语句,构建时候执行
RUN yarn install
# 暴露镜像的指定端口,替换成应用实际的端口号
EXPOSE 8090
# 指定镜像启动运行的脚本,只有容器真正运行的时候才会运行的脚本,执行后容器的生命周期即结束,且一般为阻塞式语句,如tail语句
# tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止,会输出文件,追踪文件更新
# ENTRYPOINT如果不是json就会以ENTRYPOT为准,
# 如果ENTRYPOINT和CMD都是JSON,就用ENTRYPOINT+CMD拼接
CMD tail -f xxx.txt # 也可以使用ENTRYPOINT
CMD [ "node", "server.js" ] # 用法举例
附图ENTRYPOINT和CMD
下面介绍几个我没有怎么用过的
# VOLUME
# 指定映射文件,可实现挂载功能,可以将宿主机目录挂载到容器中,可用专用的文件存储当作Docker容器的数据存储部分
VOLUME ["/data"]
# LABEL
# 指定元数据,便于找到docker,一个Dockerfile种可以有多个LABEL
LABEL com.xiaojin.blog="xiaojin"
LABEL version="1.0"
LABEL description="I see myself as a boy playing on the \
seashore, find a smooth stone, I feel happy. "
# USER
# 设置启动容器的用户,可以使用用户名或UID
USER daemo
USER UID
# ONBUILD [INSTRUCTION]
# 这个命令只对当前镜像的子镜像生效。当前镜像构建的时候不会执行,基于当前镜像的镜像去构建的时候才会执行
# 比如当前镜像为A, ls -al 命令不会在A镜像构建或启动的时候执行,它会在子镜像构建的时候被执行
ONBUILD RUN ls -al
# STOPSIGNAL
# 当容器停止时给系统发送什么样的指令,指定容器使用什么信号,一般指定信号名,
STOPSIGNAL signal
# HEALTHCHECK
# 容器健康状况检查命令,有下面两种语法
HEALTHCHECK [OPTIONS] CMD command
HEALTHCHECK NONE
docker部署nodejs与测试
超简单图文并茂基于Linux使用Docker部署Node.js项目
大功告成~~
- 今天就写到这里啦~小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
- 大家要天天开心哦
欢迎大家指出文章需要改正之处~
学无止境,合作共赢