Grails & Docker
GR8Conf US 2017
http://gr8conf.us/talks/542
whoami > Colin Harrington
- Grails team at OCI
- @ColinHarrington
- harringtonc@objectcomputing.com
Virtual Machines
Linux Containers
Docker
Containers
- LXC
- Docker
- Snap Packages
Virtual Machine vs Docker
Linux Containers
LXC
OS Container vs App container
Snap Packages
Ubuntu 'snappy'
Docker
https://docs.docker.com/get-started/
An image is a lightweight, stand-alone, executable package that includes everything needed to run a piece of software, including the code, a runtime, libraries, environment variables, and config files.
A container is a runtime instance of an image—what the image becomes in memory when actually executed. It runs completely isolated from the host environment by default, only accessing host files and ports if configured to do so.
Containers run apps natively on the host machine’s kernel. They have better performance characteristics than virtual machines that only get virtual access to host resources through a hypervisor. Containers can get native access, each one running in a discrete process, taking no more memory than any other executable.
Docker CE
Community Edition
Always free
Evergreen releases
Docker EE
Enterprise Edition
Docker Certified Images
Paid support
Stable tested releases
https://blog.docker.com :: 2017/03
$ docker run hello-world
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/userguide/
$ docker run -it ubuntu
root@c84e9c595c43:/# cat /etc/issue
Ubuntu 16.04.2 LTS \n \l
root@c84e9c595c43:/#
Run a Ubuntu Image
TestContainers
https://testcontainers.org/
TestContainers is a Java 8 library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
https://github.com/testcontainers/testcontainers-java
Greach 2017 talk
https://youtu.be/CrsMZM1trxk
testcontainers-spock
https://github.com/testcontainers/testcontainers-spock
Elastic Container Service
https://speakerdeck.com/mpas/running-your-dockerized-application-s-on-aws-ec2-container-service
Dockerfile
Used to build your image
Demo
Docker Compose
docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
docker-compose.yml
Demo
.env file
Swarm
Networking
...
networks:
frontend:
# Use a custom driver
driver: custom-driver-1
backend:
# Use a custom driver which takes special options
driver: custom-driver-2
driver_opts:
foo: "1"
bar: "2"
Connect with Us
grails.org
groovy-community.grails.org
grailsblog.objectcomputing.com
objectcomputing.com/grails
@grailsframework
@objectcomputing
Thank you for attending!
Please visit our table for giveaways
and to meet the team!
ociweb.com/grails
info@ociweb.com
Grails and Docker
By Colin Harrington
Grails and Docker
Gr8conf US 2017: Why Docker? Why containers? We'll take a hands on approach in answering these questions. We'll cover several methods of utilizing Docker for developing, running and hosting your Grails applications. We'll look at what it both Grails 2 and Grails 3. No Docker experience needed!
- 3,739