Rumah  >  Artikel  >  Java  >  Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

WBOY
WBOYke hadapan
2023-05-21 21:28:041704semak imbas

1. Ubah suai fail konfigurasi docker

Ubah suai laluan maklumat fail seperti berikut:
/etc/docker/daemon.json
Tambah kandungan berikut dalam fail konfigurasi:

 "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Nota: Jika anda tidak mempunyai daemon.json ini, buat sendiri dalam direktori /etc/docker/

touch daemon.json

tcp mendayakan akses jauh dan unix mendayakan akses tempatan Jika akses tempatan tidak didayakan, ralat berikut akan berlaku apabila menggunakannya pada pelayan:

Tidak dapat menyambung ke daemon Docker di unix:///var/run/docker .sock. Adakah daemon docker sedang berjalan ?

Selepas pengubahsuaian selesai, laksanakan arahan berikut mengikut urutan:

#重新加载配置文件                  
systemctl daemon-reload 
# 重启服务 
systemctl restart docker.service 
# 查看端口是否开启 默认端口2375 
netstat -anp|grep 2375

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

2. Konfigurasikan pembukaan port

Laksanakan arahan berikut mengikut urutan

添加指定需要开放的端口:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
重载入添加的端口:
firewall-cmd --reload
查询指定端口是否开启成功:
firewall-cmd --query-port=2375/tcp

Nota: Konfigurasi di atas semuanya dilakukan apabila firewall dihidupkan tidak dihidupkan, konfigurasi di atas tidak diperlukan Sebagai contoh, pelayan saya tidak mempunyai firewall yang dikonfigurasikan Jalankan Maklumat berikut dipaparkan:

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Akhirnya kami melihat jika kami. konfigurasi berkesan

curl http://127.0.0.1:2375/info

Jika maklumat berikut muncul, konfigurasi berjaya

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

3 IDEA memasang pemalam Docker

Jika versi idea anda lebih tinggi, pemalam docker terbina dalam

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Jika tidak, jangan risau, kami boleh memasangnya sendiri

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

4. IDEA konfigurasikan docker

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Nota: Saya melebihi 192.168.1.2 ialah IP pelayan saya sendiri, cuma tukarkannya kepada IP pelayan tempat docker anda berada
Selepas mengklik Guna, ia akan muncul dalam perkhidmatan anda
Klik sambung, kami akan menemui maklumat Kontainer konfigurasi docker kami

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

5. Konfigurasi Docker bersepadu SpringBoot

5.1 Pasang kebergantungan pom

Pasang pemalam: Docker-maven-plugin

 <!--docker-maven-plugin插件打包-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <!--镜像名称-->
                    <imageName>${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!--基础镜像jdk1.8-->
                    <baseImage>java</baseImage>
                    <!--制作者提供本人信息-->
                    <maintainer>ninesun@qq.com</maintainer>
                    <!--切换到Root目录-->
                    <workdir>/ROOT</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>

                    <!--指定DockerFile路径-->
                    <!--                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>-->

                    <!--指定远程docker api地址-->
                    <dockerHost>http://192.168.1.2:2375</dockerHost>

                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/ROOT</targetPath>
                            <!--用于指定需要复制的根目录-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要复制的jar文件-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

Semua konfigurasi maven saya adalah seperti berikut:



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.6
         
    
    com.example
    docker
    0.0.1-SNAPSHOT
    docker
    docker
    
        11
        true
        true
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            <!--docker-maven-plugin插件打包-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <!--镜像名称-->
                    <imageName>${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!--基础镜像jdk1.8-->
                    <baseImage>java</baseImage>
                    <!--制作者提供本人信息-->
                    <maintainer>ninesun@qq.com</maintainer>
                    <!--切换到Root目录-->
                    <workdir>/ROOT</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>

                    <!--指定DockerFile路径-->
                    <!--                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>-->

                    <!--指定远程docker api地址-->
                    <dockerHost>http://192.168.1.2:2375</dockerHost>

                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/ROOT</targetPath>
                            <!--用于指定需要复制的根目录-->
                            <directory>${project.build.directory}</directory>
                            <!--用于指定需要复制的jar文件-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        
    

Nota: Selepas kami berjaya menarik pemalam, kami akan mendapati bahawa struktur direktori menjadi seperti berikut:

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Kami perlu memadamkan kelas permulaan, jika tidak pembungkusan akan gagal. Saya memadamkan DockerApplication secara langsung

imej binaan 5.2

Sebelum membina imej, kami perlu membungkus projek dahulu Operasi

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Masukkan direktori projek kami melalui cmd

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Laksanakan

mvn docker:build

Mesej berikut muncul Menunjukkan pembungkusan yang berjaya

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Seterusnya, kembali kepada idea kami dan anda boleh melihat bahawa

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Ini adalah apa yang telah kami bungkus Mirror
laksanakan

docker images

pada pelayan dan anda juga boleh melihat maklumat cermin

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

5.3 Mulakan cermin

pada pelayan kami Laksanakan dalam

docker run -d --name idea-docker-test -p 8089:8080 docker

Nota: The sebab saya mendedahkan port 8089 adalah kerana konflik dengan 8080. Cuma tukar mengikut situasi anda sendiri

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Terima Mari lawati antara muka ujian yang kami tulis:

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Anda dapat melihat bahawa ia telah digunakan dengan jayanya dan ia juga boleh diakses dengan jayanya

Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?

Kita dapat melihat bahawa ia juga boleh boleh dilihat dalam Idea Mari kita ke imej yang baru kita mulakan dengan jayanya dan output log

Atas ialah kandungan terperinci Bagaimanakah idea membungkus dan menggunakan projek SpringBoot dengan cepat ke dalam imej Docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam