nginxのupstreamのnameは_-とか使えない
本家はこちら
ちょっとした社内向けのマイクロサービスしてると1つのnginxでいろんなところに飛ばす必要がでてきてしまい...
スネークケースとかケバブケースでnginx.confを書こうとしたらエラーになったのでメモ
upstream app_lb {
server app.local
}
この設定はNG
upstream applb {
server app.local
}
こっちはOK
nginxの設定のキー名によく_
がでてくるから使えるかと思ったら使えなかった
ざざざっと書いたあとでエラーになったので、あせる
ちなみにエラーにはなるのだが、定義されてないので、使えないっていうのがさらに時間を溶かしていった
SpringBootアプリをjibでDocker化する
本家はこちら
Google製のJavaをdocker化してくれるアプリでSpringBootのデモアプリをDocker化する
buildscript {
ext {
springBootVersion = '2.0.3.RELEASE'
}
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:0.9.8"
}
}
group = 'net.kosasaki.example'
version = '0.0.1-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'com.google.cloud.tools.jib'
dependencies {
compile('org.springframework.boot:spring-boot-starter-webflux')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compileOnly('org.projectlombok:lombok:1.18.0')
compile 'mysql:mysql-connector-java:6.0.6'
}
jib {
from {
image = 'adoptopenjdk/openjdk8:alpine-slim'
}
to {
image = 'sample/jib-demo-app'
}
container {
jvmFlags = ['-Xms512m', '-Xdebug']
mainClass = 'net.kosasaki.example.WebApplication'
args = []
ports = ['8080/tcp']
useCurrentTimestamp = true
}
}
build.gradleはこんな感じ。
$ ./gradlew jibDockerBuild
docker images
でイメージを確認する
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sample/jib-demo-app latest 891911ccd0de About a minute ago 133MB
イメージ作成できてました。簡単すぎる。
イメージを実行して確認する
$ docker run --rm -it -p 8080:8080 --name jib-demo-app sample/jib-demo-app
Picked up JAVA_TOOL_OPTIONS
docker-credential-ecr-loginのインストール
本家はこちらdocker-credential-ecr-login
を使えば、楽だよってでてたので、インストール
(golang 入ってない人は yum | brew | apt-get でインストールする)
$ go get -u github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login
これでインストールおわり。
aws configureでaccess keyと secret access keyを設定する
$ aws configure --profile ecr
AWS Access Key ID [**********************]:
AWS Secret Access Key [**********************]:
Default region name [ap-northeast-1]:
Default output format [json]:
ECRのログイン情報する
$ aws ecr get-login --no-include-email --region ap-northeast-1
docker login -u AWS -p ${long password} https://${repository number}.dkr.ecr.ap-northeast-1.amazonaws.com
ログインコマンドが発行されるので、これを実行する
$ docker login -u AWS -p ${long password} https://${repository number}.dkr.ecr.ap-northeast-1.amazonaws.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
error getting credentials - err: exec: "docker-credential-ecr-login": executable file not found in $PATH, out: ``
変なエラーがでる。。。
とおもったら、 docker-credential-ecr-login
にパスが通ってないもよう。
パスを通して再度実行して解決
$ vi ~/.bash_profile
export PATH=$PATH:~/go/bin <- これを追加
Javaアプリをdocker化してくれるjibを環境ごとに分岐する
本家はこちら
Java(Spring)アプリをdocker化してくれるんだけど、環境ごとに分けたいことはあるので、パラメータを切り替えられるようにする。
buildscript {
ext {
springBootVersion = '2.0.3.RELEASE'
jibVersion = "0.9.8"
}
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:${jibVersion}"
}
}
apply plugin: 'org.springframework.boot'
apply plugin: 'com.google.cloud.tools.jib'
dependencies {
compile('org.springframework.boot:spring-boot-starter-webflux')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
}
/**
* jibの設定 ifで分岐する
*/
if(project.build == 'product') {
jib {
from {
image = 'adoptopenjdk/openjdk8:alpine'
}
to {
image = 'sample/jib-demo-product-app'
}
container {
jvmFlags = ['-Xms512m', '-Xdebug']
mainClass = 'com.example.demo.DemoApplication'
args = []
ports = ['8080/tcp']
}
}
} else {
jib {
from {
image = 'adoptopenjdk/openjdk8:alpine'
}
to {
image = 'sample/jib-demo-app'
}
container {
jvmFlags = ['-Xms512m', '-Xdebug']
mainClass = 'com.example.demo.DemoApplication'
args = []
ports = ['8080/tcp']
}
}
}
上記のように設定し、gradleコマンドをキックするときに、引数を渡してあげればいい
$ ./gradlew -Pbuild=product
REPOSITORY TAG IMAGE ID CREATED SIZE
sample/jib-demo-product-app latest 4fe1925bb902 48 years ago 220MB
</pr
Javaアプリをdocker化してくれるjibを環境ごとに分岐する
本家はこちら
Java(Spring)アプリをdocker化してくれるんだけど、環境ごとに分けたいことはあるので、パラメータを切り替えられるようにする。
buildscript {
ext {
springBootVersion = '2.0.3.RELEASE'
jibVersion = "0.9.8"
}
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:${jibVersion}"
}
}
apply plugin: 'org.springframework.boot'
apply plugin: 'com.google.cloud.tools.jib'
dependencies {
compile('org.springframework.boot:spring-boot-starter-webflux')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
}
/**
* jibの設定 ifで分岐する
*/
jib {
if(project.build == 'product') {
jib {
from {
image = 'adoptopenjdk/openjdk8:alpine'
}
to {
image = 'sample/jib-demo-product-app'
}
container {
jvmFlags = ['-Xms512m', '-Xdebug']
mainClass = 'com.example.demo.DemoApplication'
args = []
ports = ['8080/tcp']
}
}
} else {
jib {
from {
image = 'adoptopenjdk/openjdk8:alpine'
}
to {
image = 'sample/jib-demo-app'
}
container {
jvmFlags = ['-Xms512m', '-Xdebug']
mainClass = 'com.example.demo.DemoApplication'
args = []
ports = ['8080/tcp']
}
}
}
上記のように設定し、gradleコマンドをキックするときに、引数を渡してあげればいい
$ ./gradlew -Pbuild=product
REPOSITORY TAG IMAGE ID CREATED SIZE
sample/jib-demo-product-app latest 4fe1925bb902 48 years ago 220MB
</cod
Javaアプリをdocker化してくれるjibを環境ごとに分岐する
本家はこちら
Java(Spring)アプリをdocker化してくれるんだけど、環境ごとに分けたいことはあるので、パラメータを切り替えられるようにする。
buildscript {
ext {
springBootVersion = '2.0.3.RELEASE'
jibVersion = "0.9.8"
}
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath "gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:${jibVersion}"
}
}
apply plugin: 'org.springframework.boot'
apply plugin: 'com.google.cloud.tools.jib'
dependencies {
compile('org.springframework.boot:spring-boot-starter-webflux')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile project(":service")
}
/**
* jibの設定 ifで分岐する
*/
jib {
if(project.build == 'product') {
jib {
from {
image = 'adoptopenjdk/openjdk8:alpine'
}
to {
image = 'sample/jib-demo-product-app'
}
container {
jvmFlags = ['-Xms512m', '-Xdebug']
mainClass = 'com.example.demo.DemoApplication'
args = []
ports = ['8080/tcp']
}
}
} else {
jib {
from {
image = 'adoptopenjdk/openjdk8:alpine'
}
to {
image = 'sample/jib-demo-app'
}
container {
jvmFlags = ['-Xms512m', '-Xdebug']
mainClass = 'com.example.demo.DemoApplication'
args = []
ports = ['8080/tcp']
}
}
}
上記のように設定し、gradleコマンドをキックするときに、引数を渡してあげればいい
$ ./gradlew -Pbuild=product
REPOSITORY TAG IMAGE ID CREATED SIZE
sample/jib-demo-product-app latest 4fe1925bb902