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/.jar"]

你可能感兴趣的:(学习,docker)