まず、Springbootプロジェクトを作成します
SpringBootプロジェクトSpring-Boot-Dockerを作成する
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
HelloController.java
@RestController
public class HelloController {
@GetMapping("/docker")
public String hello() {
return "Hello Docker!!";
}
}
Dockerfileを作成し、src / dockerディレクトリの下に配置します
FROM java:8
VOLUME /tmp
ADD spring-boot-docker-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
次に、プロジェクトをDockerにデプロイします
1.書類を準備する
mvnコマンドを実行して、springbootプロジェクトをパッケージ化します
mvn install
jarパッケージとDockerfileを特定のフォルダーにコピーします
2.画像ファイルを作成します
cd
jarパッケージとDockerfileが格納されているディレクトリ
イメージ作成コマンドを実行する
docker build -t spring-boot-docker .
-t
ビルドされるイメージの名前とラベルを、通常はname:tagまたはnameの形式で表します。タグが宣言されていない場合、デフォルトはlatestです。
.
Dockerfileが配置されているディレクトリである現在のディレクトリを表します
実行後、イメージを確認すると、イメージが正常にビルドされていることがわかります
docker images
3.プロジェクトを実行する
ミラーを実行
docker run -p 8080:8080 -d spring-boot-docker
-p
ポートマッピングを示します。コロンの左側はDockerコンテナー外のポート番号、右側はコンテナー内のポート番号です。
-d
バックグラウンドで実行されていることを示します
Springbootの起動ログを表示する
# 查看容器
docker container ls
# 查看运行日志
docker logs -f -t --tail 行数 容器名
ランニング画像を見る
docker ps
ブラウザはhttp:// localhost:8080 / dockerにアクセスして、インターフェースから返された結果を表示します
3.問題の処理
Windowsアクセスブラウザーは、接続が利用できないことを示しています。
DockerはLinuxで実行されます。DockerはWindowsシステムで実行されます。実際には、最初にLinux環境をWindowsにインストールし、次にこの環境でDockerを実行します。したがって、アクセスサービスで使用されるlocalhostは、Windowsではなく、このLinux環境のアドレスを参照します。
QuickStartターミナルで実行し、docker-machine ip default
WindowsシステムでのLinux環境のアドレスが192.168.99.100であることを確認します。
http://192.168.99.100:8080/dockerにアクセスしても、接続が利用できないことが返されます。
実際、その理由は、インターネットからDocker Toolboxにアクセスできないためです。
Oracle VM VirtualBoxを開き、[設定]> [ネットワーク]> [NIC 1]> [詳細設定]で[ポート転送]を構成し、転送ルールを追加して、ホストの8080ポート(127.0.0.1)がサブシステムの8080ポートを指すようにし、http:にアクセスします。 // localhost:8080 / dockerで十分です。