具体内容如下:

1、在Linux中安装docker 

使用安装命令: 

apt-get install docker.io

还有一个是更新软件并安装docker:

        sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io 

运行docker

systemctl start docker

开机启动docker

systemctl enable docker

查看docker 版本:docker --version   

2、修改docker 配置,关闭防火墙,放行端口

关闭防火墙

#查看防火墙状态 systemctl status firewalld
# 暂停防火墙 systemctl stop firewalld

# 启动防火墙  systemctl start firewalld

或者放行端口:2375

firewall-cmd --zone=public --add-port=2375/tcp --permanent

先查看docker的配置文件:docker.service

cat /usr/lib/systemd/system/docker.service

然后修改这个配置,如下图所示,在ExecStart后添加内容:

        -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

编辑命令:vim /usr/lib/systemd/system/docker.service 

键盘按ESC 然后输入 【:wq】保存退出即可!

(可选)查看端口:用于检查服务器上是否开放了监听端口 2375,并查看与之相关的网络连接状态

 ss -tuln | grep 2375

  • ss: 是一个用于显示套接字统计信息的工具,类似于 netstat,但通常更快且更高效。
  • -t: 表示只显示 TCP 协议的相关信息。
  • -u: 表示只显示 UDP 协议的相关信息。
  • -l: 表示只显示处于监听状态的套接字。
  • -n: 表示不进行 DNS 解析,直接显示 IP 地址和端口号。
  • grep 2375: 这是一个过滤器命令,用于从 ss 的输出中筛选出包含端口号 2375 的行。

3、重启docker

systemctl daemon-reload && systemctl restart docker

systemctl daemon-reload
systemctl restart docker

4、在IDEA中进行操作

①先给IDEA安装docker插件

安装之后添加docker操作:具体如下图所示

然后IDEA就可以连接到docker里面了! 

最后在项目中编写dockerfile文件,示例dockerfile文件内容:

目前需求是需要含有GDAL 3.8.5的JDK,目前是有GDAL3.8.5的镜像,和JDK17的安装包,所以需要把两部分都编译到容器中,所以内容如下的:

# 基础镜像
FROM gdal-3.8.5:1.0

# 设置维护者信息
LABEL maintainer="ATB <ATB@ATB.com>" \
      version="1.0" \
      description="Docker image for ev-admin Spring Boot application"

# 创建必要目录(logs、文件目录等)
RUN mkdir -p /home/software/appServer/logs \
            /home/software/appServer/temp \
            /home/software/appServer/uploadPath \
            /usr/local/java \
            /home/software/appServer/skywalking/agent

# jdk-17
COPY bellsoft-jdk17.0.15_10-linux-amd64-full.tar.gz  /home/software/appServer/

# 设置工作目录
WORKDIR /home/software/appServer


# 解压压缩包到目标目录
RUN tar -xzvf /home/software/appServer/bellsoft-jdk17.0.15_10-linux-amd64-full.tar.gz -C /usr/local/java && \
    rm /home/software/appServer/bellsoft-jdk17.0.15_10-linux-amd64-full.tar.gz


# 拷贝 Spring Boot jar 包和 config 配置(可选)
COPY ./target/atb-admin.jar ./atb-admin.jar
# COPY ./jar/config ./config


# 设置环境变量
ENV JAVA_HOME=/usr/local/java/jdk-17.0.15-full
ENV PATH=$PATH:$JAVA_HOME/bin

ENV CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/share/java

ENV SERVER_PORT=8082
# 暴露端口
EXPOSE ${SERVER_PORT}

# 启动应用
ENTRYPOINT ["java","-jar","atb-admin.jar"]

若是已经有包含GDAL的JDK,则dockerfile内容如下:

# 基础镜像选择
FROM gdal-jdk17:3.8.5

# 设置维护者信息
LABEL maintainer="ATB <ATB@ATB.com>" \
      version="1.0" \
      description="Docker image for ev-admin Spring Boot application"

# 创建必要目录(logs、文件目录等)
RUN mkdir -p /home/software/appServer/logs \
            /home/software/appServer/temp \
            /home/software/appServer/uploadPath \
            /home/software/appServer/skywalking/agent

# 设置工作目录
WORKDIR /home/software/appServer

# 拷贝 Spring Boot jar 包和 config 配置(可选)
COPY ./jar/atb-admin.jar ./atb-admin.jar
# COPY ./jar/config ./config

# 目录持久化挂载点
VOLUME ["/home/software/appServer/logs", \
         "/home/software/appServer/temp", \
         "/home/software/appServer/uploadPath"]

# 设置环境变量
ENV SERVER_PORT=8082

# 暴露端口
EXPOSE ${SERVER_PORT}

# 设置启动命令
ENTRYPOINT ["java", \
            "-Djava.security.egd=file:/dev/./urandom", \
            "-Dserver.port=${SERVER_PORT}", \
            # 应用名称 如果想区分集群节点监控 改成不同的名称即可
            # "-Dskywalking.agent.service_name=ruoyi-server", \
            # "-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar", \
            "-jar", "atb-admin.jar"]

把dockerfile编写完成后,在idea中添加Windows的docker工具,如下所示,可以下载最新的docker

Index of win/static/stable/x86_64/

下载解压后,然后在idea中,配置一下 ,如下图所示:

然后在idea中运行前编译一些配置

最后打包运行即可!然后容器的启动、停止、idea都可以进行操作了!

其他内容:在根目录的pom文件中添加如下内容

            <plugin>
                <!--安装docker插件-->
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <!--远程连接地址-->
                    <dockerHost>http://192.168.1.88:2375</dockerHost>
                    <!--镜像名称-->
                    <imageName>atb/${project.artifactId}</imageName>
                    <!--dockerfile的位置-->
                    <dockerDirectory>${project.basedir}/atb-admin</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--jar 包所在的路径 此处配置的 即对应 target 目录-->
                            <directory>${project.basedir}/atb-admin/target</directory>
                            <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                            <include>atb-admin.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

编译命令:

docker build -t atb-serverapp:1.0 .

启动命令:

docker run -d --name atb-serverapp \
           -p 8082:8082 \
           -v /home/software/appServer/logs:/home/software/appServer/logs \
           -v /home/software/appServer/temp:/home/software/appServer/temp \
           -v /home/software/appServer/uploadPath:/home/software/appServer/uploadPath \
           atb-serverapp:1.0
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐