Skip to content

Commit 3d2edb7

Browse files
Merge pull request #21 from resilva87/feature/docker-image
Cria imagem Docker para o app
2 parents d283992 + 4dbc191 commit 3d2edb7

File tree

3 files changed

+55
-3
lines changed

3 files changed

+55
-3
lines changed

README.md

+23-2
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,32 @@ Crie seu arquivo de propriedade `src/main/resources/application-custom.yml` e ro
2929
gradle bootRun -Dspring.profiles.active=custom
3030
```
3131

32+
## Usando imagem Docker
33+
Para gerar a imagem Docker do projeto, execute:
34+
```
35+
gradle buildDocker
36+
```
37+
38+
Por padrão, o nome da imagem será `concretesolutions/mock-api:VERSAO`.
39+
40+
Para rodar a aplicação, crie dois diretórios: um contendo o arquivo de configuração `application-custom.yml` e o outro contendo os arquivos de mock. Execute então:
41+
42+
```
43+
docker run -d --name mock-api \
44+
-p 9090:9090 \
45+
-v /path/para/arquivo/application-custom.yml:/config/application.yml \
46+
-v /path/para/diretorio/dados/:/data \
47+
concretesolutions/mock-api:VERSAO
48+
```
49+
50+
A porta `9090` expõe o serviço enquanto a porta `5000` é utilizada para debug da aplicação.
51+
52+
Para visualizar os logs da aplicação a partir do container: `docker logs -f mock-api`
53+
3254
## TODO
33-
* Adicionar a opção de fazer build com Docker
3455
* Separar testes unitários dos testes integrados
3556
* Corrigir os testes ignorados
3657
* Corrigir Code Style
37-
* Adcionar plugin do FindBugs
58+
* Adicionar plugin do FindBugs
3859
* Revisar dependências (ver, por exemplo, se é mesmo necessário ter o GSON ou modelmapper)
3960
* Usar objectmapper como component: `compile('com.fasterxml.jackson.datatype:jackson-datatype-jdk8')`

build.gradle

+15-1
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ buildscript {
77
}
88
dependencies {
99
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
10+
classpath('se.transmode.gradle:gradle-docker:1.2')
1011
}
1112
}
1213

1314
apply plugin: 'java'
1415
apply plugin: 'eclipse'
1516
apply plugin: 'org.springframework.boot'
1617
apply plugin: 'jacoco'
18+
apply plugin: 'docker'
1719

1820
version = '4.0.0-SNAPSHOT'
1921
sourceCompatibility = 1.8
@@ -22,7 +24,6 @@ repositories {
2224
mavenCentral()
2325
}
2426

25-
2627
dependencies {
2728
compile('org.springframework.boot:spring-boot-starter')
2829
compile 'org.springframework.boot:spring-boot-starter-undertow'
@@ -56,3 +57,16 @@ task codeCoverageReport(type: JacocoReport) {
5657
csv.enabled false
5758
}
5859
}
60+
61+
62+
task buildDocker(type: Docker, dependsOn: build) {
63+
push = false
64+
applicationName = 'concretesolutions/' + jar.baseName
65+
dockerfile = file('src/main/docker/Dockerfile')
66+
doFirst {
67+
copy {
68+
from jar
69+
into stageDir
70+
}
71+
}
72+
}

src/main/docker/Dockerfile

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
FROM frolvlad/alpine-oraclejdk8:slim
2+
MAINTAINER "Concrete <[email protected]>"
3+
4+
VOLUME /config
5+
VOLUME /data
6+
7+
WORKDIR /
8+
9+
EXPOSE 5000
10+
EXPOSE 9090
11+
12+
COPY mock-api-*.jar app.jar
13+
ENTRYPOINT ["java", \
14+
"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5000 -Djava.security.egd=file:/dev/./urandom", \
15+
"-jar", \
16+
"/app.jar", \
17+
"--spring.config.location=file:/config/application.yml"]

0 commit comments

Comments
 (0)