Como a la mayoría de nosotros nos gusta ir al grano, intentaré ser directo y claro:
- Levantamos un EC2 (con Amazon Linux)
- Descargamos el archivo PEM generado para poder conectarnos por consola.
- Nos conectamos a la instancia levantada de la siguiente manera:
- chmod 400 xxxxYYY.pem
- ssh -i «xxxxYYY.pem» ec2-user@<<IP_PUBLICA_CON_DNS>>
- Instalamos docker en la instancia:
- sudo yum install -y docker
- Arrancamos docker:
- sudo service docker start (inicia docker)
- Definimos que arranque auto cuando iniciamos instancia:
- sudo chkconfig docker on (auto arranque)
- Descargamos la imagen de tomcat:
- sudo docker pull tomcat
- Comprobamos la imagen:
- sudo docker images (comprobamos imagen)
- Ejecutamos imagen de tomcat, mapeando puertos entre docker y ec2
- sudo docker run -d -p 8080:8080 tomcat
- Para comprobar que esta arrancada:
- sudo docker ps
- Subimos el war del proyecto a un S3 por ejemplo, con IP pública.
- Nos conectamos al tomcat del docker:
- sudo docker exec -it DOCKERID /bin/bash
- comprobamos el directorio de despliegue, por defecto:
- /usr/local/tomcat/webapps
- Aquí tenemos dos opciones:
- Podemos hacer un wget del fichero war ahí mismo y se lanzará el autodeploy
- Sobre la consola EC2, descargamos el war de la ip pública del S3 a un directorio dentro de home/ec2-user/spring-test (por ejemplo) del ec2: wget https://xxxxxYYYY.war
- Ahora ejecutamos la imagen de tomcat mapeando puertos e indicando directorios de despliegue, nuestra imagen y el despliegue de tomcat:
- sudo docker run -d -p 8080:8080 -v /home/ec2-user/spring-test:/usr/local/tomcat/webapps tomcat
Y listo! ya tendriamos desplegado el fichero war. Por otro lado si lo que queréis es construir y automatizar el proceso en una imagen de Docker:
- Creamos un docker file definiendo nuestro enlace del war, la carpeta destino y tantos parámetros como queramos (ejemplo en consola linux)
cat > Dockerfile << EOF
FROM tomcat
# Deploy JavaEEDemo Application
ADD https://xxxxYYYY.war /usr/local/tomcat/webapps/
# Explicitly expose port 8080 (explicit is required by Elastic Beanstalk)
EXPOSE 8080
EOF
- Generamos la imagen con la config del docker file
- sudo docker build –tag=spring-boot-tomcat .
- Ejecutamos la imagen con:
- sudo docker run -d -p 8080:8080 –name spring-cron spring-boot-tomcat
NOTA: recordad que esta imagen siempre tendrá la misma version del war en el momento de lanzar el build (podríamos automatizar esto con un docker-compose.yml).
Saludos!
Deja una respuesta