当前位置: 首页 > article >正文

dockerfile指令学习

进入容器内部有2种方法。

1  docker run -it  centos bash  退出后容器会挂了。

2  docker run -d  --name  my_nginx --restart=always -p 8989:80 nginx

    docker exec -it  my_nginx bash

--restart=always表示ngix挂了后会自动重启,  -P 随机映射一个端口

dockerfile可以根据基础镜像创建自己的镜像。

FROM 指定基础镜像

FROM 镜像名:tag号, eg::FROM centos

MAINTAINER  指定维护者信息  eg:MAINTAINER zwj

RUN 镜像在构建时想执行的各种linux命令

ADD/COPY  都是将宿主机文件拷贝到容器内部 ,COPY仅仅是拷贝, ADD指令拷贝后还支持自动解压缩 tar 文件和远程 URL

eg:COPY  aa.py  /opt   

        ADD https://example.com/archive.tar.gz /tmp/

WORKDIR  设置当前工作目录, 就是更改进入容器的根目录

VOLUME 将容器内部的数据映射到宿主机。 相当于 docker run -v

 eg:VOLUME /data  时将容器内部的/data文件夹在容器运行时自动挂载到匿名卷。

EXPOSE 容器内暴露一个对外的端口

ENTRYPOINT/CMD  指定容器启动后将要进行的一些操作,

CMD ["参数1","参数2"] 命令只能有一个

eg; CMD ["/bin/bash"]  CMD ["cat","/etc/os-release"]  CMD ["curl" "-s", "http:baidu.com"]

区别:CMD 命令,在执行docker run 命令时传入的指令会覆盖掉dockerfile里面定义的命令

ENTRYPOINT命令  在执行dokcer run命令时传入的参数会当作dockerfile里面ENTRYPOINT命令的参数。

ARG/ENV 都是设置docker环境变量的

ENV 设置的环境变量不管是镜像构建时还是容器运行时该变量都可以用

ARG 设置的环境变量只能在镜像构建时有效, 容器运行时丢失了。

eg:ENV name=“aa”  后面的上下文中通过$name来访问该变量

USER 用于切换用户, eg: USER root

要使用Docker部署Spring Boot项目,你可以创建一个Dockerfile来定义Docker镜像的构建过程。以下是一个示例的Dockerfile:

# 使用基于Java的镜像作为基础镜像
FROM openjdk:11-jdk

# 设置工作目录
WORKDIR /app

# 复制Spring Boot应用的Jar包到容器中
COPY target/my-spring-boot-app.jar app.jar

# 暴露Spring Boot应用的默认端口(如果有自定义端口,请修改为实际使用的端口)
EXPOSE 8080

# 启动Spring Boot应用
CMD ["java", "-jar", "app.jar"]

在上面的Dockerfile中,我们选择了基于Java的OpenJDK 11镜像作为基础镜像。然后,设置工作目录为/app,在容器中创建一个目录用于存放应用程序文件。

接下来,我们将Spring Boot应用的可执行Jar包复制到容器中的/app目录下,命名为app.jar。确保将target/my-spring-boot-app.jar替换为你实际的Jar包路径。

然后,通过EXPOSE命令暴露Spring Boot应用的默认端口(通常为8080)。如果你的应用使用了自定义端口,请修改为实际使用的端口。

最后,使用CMD命令指定在容器启动时运行的命令。这里使用java -jar app.jar来启动Spring Boot应用。

保存以上内容为Dockerfile文件,并将其与Spring Boot项目的根目录放在同一级别的位置。

接下来,进入命令行,在项目根目录执行以下命令来构建Docker镜像:

docker build -t my-spring-boot-app .

或者

# 基础镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 复制 Maven 项目文件
COPY pom.xml .

# 下载 Maven 依赖包
RUN ["mvn", "dependency:resolve"]

# 复制整个 Maven 项目(除了 target 目录)
COPY src ./src

# 构建 Maven 项目
RUN ["mvn", "package"]

# 运行命令
CMD ["java", "-jar", "/app/target/<your-application-name>.jar"]


http://www.kler.cn/news/149263.html

相关文章:

  • ubuntu改window任务栏
  • Leetcode—2336.无限集中的最小数字【中等】
  • 随笔(持续更新)
  • SELinux零知识学习三十七、SELinux策略语言之约束(1)
  • 2023年合肥市瑶海区某校校赛真题(小学组)
  • 图书管理系统源码,图书管理系统开发,图书借阅系统源码整体功能演示
  • MySQL(主从复制)
  • C语言数据结构之顺序表(上)
  • VT-VSPA1-1X比例压力阀控制板
  • Roll-A-Ball 游戏
  • fastadmin学习笔记-----动态下拉框
  • PWM 正玄波形 通过C语言生成
  • 宕机对独立服务器会有啥影响?
  • 音视频5、libavformat-1
  • springcloud nacos配置优先级研究及配置管理最佳实践
  • linux logrotate日志轮询设置案例一
  • 网络安全--基于Kali的网络扫描基础技术
  • LuatOS-SOC接口文档(air780E)--protobuf - ProtoBuffs编解码
  • 【GitLab】流水线入门
  • 双音多频的通信(数字信号处理实验3)
  • 使用Python类型提示保持代码整洁,提高可读性
  • awk笔记231129
  • 【智能算法】季节优化算法Seasons optimization algorithm【2023最新智能优化算法合集】
  • 第二证券:五日线是什么颜色的线?
  • 基于单片机的烟雾检测报警装置(论文+源码)
  • 【Python小游戏】推荐8款自由的Python游戏项目
  • embeddings
  • C++学习之路(十一)C++ 用Qt5实现一个工具箱(增加一个进制转换器功能)- 示例代码拆分讲解
  • 黄金比例设计软件Goldie App mac中文版介绍
  • 【C数据(一)】数据类型和变量你真的理解了吗?来看看这篇