Docker: build и пример Dockerfile

Автор: | 11/12/2015
 

docker_lxcБыло в планах написание полноценного постав на эту тему, но пока — просто быстрый пример создания и запуска Docker-образов.

Создаём каталог для проекта:

$ mkdir /tmp/docker_test/QAreports7 && cd /tmp/docker_test/QAreports7

Создаём Dockerfile:

FROM java:8
MAINTAINER User "user@domain.com"
COPY eod-report-0.0.1-SNAPSHOT.jar /opt
ENTRYPOINT ["/usr/bin/java", "-jar"]
CMD ["/opt/eod-report-0.0.1-SNAPSHOT.jar", "--server.port=8080"]

Собираем образ:

$ docker build -t qareport7 .
Sending build context to Docker daemon 24.71 MB
Step 1 : FROM java:8
 ---> c1ccce98b537
Step 2 : MAINTAINER User "user@domain.com"
 ---> Using cache
 ---> 8d38ce2a9cc9
Step 3 : COPY eod-report-0.0.1-SNAPSHOT.jar /opt
 ---> Using cache
 ---> e3dd7e5cb667
Step 4 : ENTRYPOINT /usr/bin/java -jar
 ---> Running in 745f05468849
 ---> b6e3f9b0eadc
Removing intermediate container 745f05468849
Step 5 : CMD /opt/eod-report-0.0.1-SNAPSHOT.jar
 ---> Running in 963c74d6b82c
 ---> 7bfb339a0c2b
Removing intermediate container 963c74d6b82c
Successfully built 7bfb339a0c2b

Проверяем:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
qareport7           latest              7bfb339a0c2b        3 minutes ago       666.6 MB
...

Запускаем работать в бекграунде:

$ docker run -p 8080:8080 -d qareport7
7c900e34f8ab96424ddda0da6f0e5f71d01ca7c3f8d4b673e811858002c7aa5d

Проверяем:

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
7c900e34f8ab        qareport7           "/usr/bin/java -jar /"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->8080/tcp   lonely_feynman

Смотрим логи — запустилось ли приложение после запуска контейнера:

$ docker logs -f 7c900e34f8ab

  .   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _    
( ( )___ | '_ | '_| | '_ / _` |    
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |___, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.2.7.RELEASE)

2015-11-09 13:59:25.146  INFO 1 --- [           main] com.akqa.eodreport.EodReportApplication  : Starting EodReportApplication v0.0.1-SNAPSHOT on 7c900e34f8ab with PID 1 (/opt/eod-report-0.0.1-SNAPSHOT.jar started by root in /)
2015-11-09 13:59:25.183  INFO 1 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4753abf4: startup date [Mon Nov 09 13:59:25 UTC 2015]; root of context hierarchy
...

Пробуем подключиться к приложению в контейнере:

$ curl 127.0.0.1:8080
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>QA Daily Reports</title>
</head>
<body>

</body>
</html>

Готово.