Docker が SpringBoot プロジェクトをデプロイする

CentOS Dockerのインストール

docker.service構成を変更してポート 2375 を開きます

vi /usr/lib/systemd/system/docker.service
-H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock

1

ドッカーを再起動します

# 重新加载服务的配置文件
systemctl daemon-reload
# 重启 docker
service docker restart
# 开放端口
firewall-cmd --zone=public --permanent --add-port=2375/tcp
# 重启防火墙
systemctl restart firewalld

ここに画像の説明を挿入します

構成

Dockerfile

FROM hub.c.163.com/library/java:8-jdk
VOLUME /tmp
ADD target/docker_deploy-0.0.1-SNAPSHOT.war app.war
ENTRYPOINT ["java","-jar","/app.war"]
  1. SpringBoot プロジェクトの動作は Java 環境に依存するため、カスタム イメージは Java イメージをベースに構築する必要があり、ここでは NetEase が提供する Docker イメージを使用します。
  2. SpringBoot を実行するには tmp ディレクトリが必要ですが、ここではデータ ボリュームは /tmp ディレクトリで構成されます。
  3. ローカルのターゲット ディレクトリにあるパッケージ化された .war ファイルの新しいコピーを /app.war にコピーします。
  4. 起動コマンドを設定します。

pom.xml

warパッケージ生成時に/src/main/webapp/WEB-INF/web.xmlファイルが存在しない問題を解決

<properties>
    <!-- 如果打包方式为 war 包,并且没有 /src/main/webapp/WEB-INF/web.xml 文件 -->
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

新しいプラグインを追加する

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.0</version>
    <executions>
        <execution>
            <id>build-image</id>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <dockerHost>http://192.168.179.128:2375</dockerHost>
        <imageName>yueyazhui/${project.artifactId}</imageName>
        <imageTags>
            <imageTag>${project.version}</imageTag>
        </imageTags>
        <forceTags>true</forceTags>
        <dockerDirectory>${project.basedir}</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.war</include>
            </resource>
        </resources>
    </configuration>
</plugin>
  1. 実行ノードでmvnパッケージ実行時にdocker:buildが実行されるように設定します。
  2. 構成ノードで Docker のホスト アドレス、イメージ名、およびイメージ タグを構成します。ここで、dockerDirectory は、指定された Dockerfile の場所を表します。
  3. リソース ノードで戦争の場所と名前を設定するだけです。

コントローラ

@RestController
public class IndexController {
    
    

    @GetMapping
    public String index() {
    
    
        return "Docker Deploy";
    }
}

ここに画像の説明を挿入します

パッケージのビルドイメージ

ここに画像の説明を挿入します

走る

オプション 1:

docker run -d --name docker_deploy_demo -p 8080:8080 yueyazhui/docker_deploy:0.0.1-SNAPSHOT

オプション 2: (推奨、IDEA を通じてイメージを実行)

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します

ここに画像の説明を挿入します
仕上げる!

抜粋: Jiangnan Yidianyu IDEA Docker 導入

おすすめ

転載: blog.csdn.net/qq_45594962/article/details/127588719