Java on Azure with Docker container

Post on 23-Jan-2018

1.467 views 0 download

Transcript of Java on Azure with Docker container

Windows Server 2016 TP3 からDocker を利用可能

http://tinyurl.com/windows-server-on-docker

Docker の基礎

コンテナ

コンテナ・イメージコンテナ実行環境

Linux

イメージ・レポジトリ

Applications

Application

Frameworks

ホスト OSホスト OS

Operating system

Operating system

Operating system Operating system

Operating System

Operating System

Locally with:

• Boot2Docker (Linux)

• Hyper V (Windows)

Physical Servers

• Linux (Linux)

• Windows TP3 (Windows)

Clouds

• Azure (Linux & Windows)

Azureオンプレミス Service Providerローカル環境

OSイメージ

ミドルウェア

Web アプリ環境構築用

のスクリプト

Docker エンジン

ホスト OS

OSイメージ

ミドルウェア

Web アプリ

OSイメージ

ミドルウェア

Web アプリ

Azure

OSイメージ

ミドルウェア

Web アプリ

ADD

CMD

COPY

ENV

EXPOSE

FROM

RUN

Dockerfile から Docker イメージ作成

FROM ubuntu:latest

# Install GlassFish 4

RUN wget -q --no-cookies --no-check-certificate

"http://download.oracle.com/glassfish/4.1/release/glassfis

h-4.1.zip"

RUN mv /glassfish-4.1.zip /usr/local; cd /usr/local; unzip

glassfish-4.1.zip ; rm -f glassfish-4.1.zip ; cd /

ADD start-gf.sh /usr/local/bin/start-gf.sh

RUN chmod 755 /usr/local/bin/start-gf.sh

EXPOSE 8080 4848

ENTRYPOINT ["/usr/local/bin/start-gf.sh”]

Dockerfile の記載例

# sudo docker build -t

yoshio3/glassfish:4.1 .

# sudo docker run -it -p 8080:8080 ¥

yoshio3/glassfish:4.1 /bin/bash

コンテナ利用シーン

1. ローカルのアプリ開発&テスト

2. 開発チームのコラボ

3. 継続的インテグレーション

4. 本番環境へのアプリのデプロイ

5. プライベート PaaS 環境の構築

開発環境

• JDK のバージョン• アップサーバのバージョン• MySQL のバージョン• OS のパッチ適用状況

開発から本番環境までの環境統一は困難

開発環境 テスト環境 本番環境

Java JDK 8 u72 JDK 8 u60 JDK 8 u20

Ruby 2.3.0 2.2.4 2.2.4

MySQL 5.6 5.5 5.5

OS Win/Ubuntu RedHat RedHat

開発から本番環境までの環境統一は困難

開発環境 テスト環境 本番環境

Java

Ruby

MySQL

OS

1. ローカルのアプリ開発&テスト

2. 開発チームのコラボ

3. 継続的インテグレーション

4. 本番環境へのアプリのデプロイ

5. プライベート PaaS 環境の構築

早く 頻繁に 安全に

リリースサイクル改善の課題

DevOps 手法の一覧

• Infrastructure as Code (IaC)

• 継続的インテグレーション

• 自動テスト

• 継続的デプロイ

• リリース管理

• アプリ パフォーマンスの監視

• ロード テストと自動スケーリング

• 可用性監視

• 変更/構成管理

• 機能フラグ

• 環境へのプロビジョニングの自動解除

• セルフサービス環境

• 自動回復 (ロールバックとロールフォワード)

• 仮説に基づく開発

• 運用環境でのテスト

• フォールト挿入

• 使用状況監視/ユーザー テレメトリ

http://www.itproguy.com/devops-practices/

コンテナ1

コンテナn

コンテナ2

コンテナ3

1. ローカルのアプリ開発&テスト

2. 開発チームのコラボ

3. 継続的インテグレーション

4. 本番環境へのアプリのデプロイ

5. プライベート PaaS 環境の構築

1. 可用性

2. 信頼性

3. セキュリティ

4. パフォーマンス

mysql:

image: mysql

ports:

- ":3306"

environment:

MYSQL_USER: mysql

MYSQL_PASSWORD: mysql

MYSQL_DATABASE: mysql-db

myglassfish:

links:

- mysql

image: tyoshio2002/gf-

mysql:latest

ports:

- 8080:8080

- 4848:4848

docker-compose.yml

8080

48483306

> docker-compose up -d

3306

> docker-compose scale myglassfish=4

OSイメージ

ミドルウェア

Web アプリ

Azure

OSイメージ

ミドルウェア

Web アプリ

1. ローカルのアプリ開発&テスト

2. 開発チームのコラボ

3. 継続的インテグレーション

4. 本番環境へのアプリのデプロイ

5. プライベート PaaS 環境の構築

MSDNサブスクリプションMicrosoft Azure無料枠

http://aka.ms/TryAzhttp://aka.ms/Free-Azure

FeedBackPlease !!

feedback.azure.com

github.com/Azure/azure-content