Creación del contenedor de Docker

6/41
Recursos

Aportes 16

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Para el que le interese aqui la imagen de docker lista para jetty y solo hay que correrla tiene los archivos necesarios, pero el petclinic no esta en el commit de git que esta publicado. Espero les sirva a muchos.

PD: recuerda cambiar YOUR_PROJECT_ID por tu proyecto para que te pueda subir al container registry.

docker pull springcommunity/spring-framework-petclinic
gcloud auth configure-docker
docker tag springcommunity/spring-framework-petclinic:latest gcr.io/YOUR_PROJECT_ID/spring-framework-petclinic:v1
docker push gcr.io/YOUR_PROJECT_ID/spring-framework-petclinic:v1
gcloud container images

Si a alguien le sirve yo estoy haciendo el ejemplo con Jetty:

docker run -d -p 8080:8080 --name petcli jetty

Dockerfile:
FROM jetty:latest
COPY target/petclinic.war /var/lib/jetty/webapps
EXPOSE 8080

Tengo una duda, ¿Como es que empujamos la imagen spring-framework-pet-clinic que creamos a partir del Dockerfile?, tengo enetendido que lo que hicimos fue hacer un TAG del ya existente springcommunity/spring-framework-petclinic y re subirlo al registro de contenedores de Google sin embargo el que creamos con el Dockerfile no lo tomamos en cuenta :S

Mi solución del Reto:
Lo hice usando la imagen de nginx.

  1. Creé una nueva carpeta ‘hello-world-docker’
  2. Creé un archivo index.html dentro de la carpeta, con el contenido <h1>Hello World</h1>
  3. En el Dockerfile, el siguiente contenido:
FROM nginx:alpine
COPY index.html /usr/share/nginx/html
EXPOSE 8080
  1. Usar $ docker build ./
  2. Listar las imágenes con $ docker images
  3. Crear el tag $ docker tag [IMG_ID] gcr.io/[PROJECT_ID]/TAG_NAME
  4. Hacer el push a las imagenes del proyecto en Google Cloud: $docker push gcr.io/[PROJECT_ID]/TAG_NAME

Y listo. La imagen se puede ver en la consola.

Nota se debe activar el container registry.

Hola alguien por favor me podria ayudar con un error que me arroja al momento de autenticarme en el container register,
a través del siguiente comando:

$ gcloud auth configure-docker

El error que me arroja es el siguiente:

WARNING: Your config file at [/home/jhonospina2711/.docker/config.json] contains these credential helper entries:
{
  "credHelpers": {
    "asia.gcr.io": "gcloud",
    "eu.gcr.io": "gcloud",
    "gcr.io": "gcloud",
    "marketplace.gcr.io": "gcloud",
    "staging-k8s.gcr.io": "gcloud",
    "us.gcr.io": "gcloud"
  }
}
Adding credentials for all GCR repositories.
WARNING: A long list of credential helpers may cause delays running 'docker build'. We recommend passing the registry name to configure only the registry you are 
using.
gcloud credential helpers already registered correctly.

Saludos.

A mi no me funcionó la App de este video, pero logré solucionar el inconveniente **clonando ** otro repositorio y haciendo los pasos siguientes. Esto ha durado hasta la clase del video 15. Si quieren pueden seguir los siguientes pasos para que no se queden atorados:
Ejecutar una App dentro de un Contenedor
Paso 1.
Clonamos repositorio Clínica de Mascotas.
• $ git clone https://github.com/spring-projects/spring-petclinic.git

Paso 2.
• Entramos a la carpeta:
○ $ cd spring-petclinic/
• Ejecutamos la app.
○ $ ./mvnw package
○ $ java -jar target/*.jar
• Cambiar a vista previa y colocar el puerto 8080
• Nota: Esta app está corriendo en una VM. Lo que vamos a hacer es ejecutarla en un contenedor.

Paso 3.
• Hacemos la imagen con este comando.
○ ./mvnw spring-boot:build-image

Antes de hacer push, deben activar el API de container registry para esto escriben en el buscador Container Registry y dan en Habilitar API, luego de esto ya pueden hacer push

levante el siguiente ejemplo de un contenedor de docker en console.cloud.google.com pero me da error, pueden revisar que esta pasando, gracias

https://www.josedomingo.org/pledin/2016/02/ejemplos-de-ficheros-dockerfile-creando-imagenes-docker/

docker run -p 8888:8888 --name servidor_web jk/apache2:1.0
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 172.18.0.2. Set the ‘ServerName’ directive globally to suppress this message

Solo cambie el puerto a 8888

Error: Could not connect to Cloud Shell on port 8888.
Ensure your server is listening on port 8888 and try again.

Hola , como podria solucionar este error ?.
docker push gc.io/spring-framework-petclinic

f3a38968d075: Waiting
a327787b3c73: Waiting
5bb0785f2eee: Waiting
error parsing HTTP 404 response body: invalid character ‘<’ looking for beginning of value: “<!doctype html>\n\n<head>\n <meta charset=“utf-8”>\n <meta http-equiv=“X-UA-Comp
atible” content=“IE=edge,chrome=1”>\n <title>We Can’t Find the Page — 404 | GameChanger</title>\n <meta name=“viewport” content=“width=device-width, initial-s
cale=1.0”>\n <link rel=“shortcut icon” href=”//d2qxbjtnvyv052.cloudfront.net/media/5dc03b255d34ded2898745d08ffaed4d/images/favicon.ico"/>\n <link rel=“apple-touch-icon"
href=”//d2qxbjtnvyv052.cloudfront.net/media/44958470ac0d1bb0c54cf71a2803f877/images/icons/dumbo_108x108.png">\n <link rel=“stylesheet” href="//d2qxbjtnvyv052.cloudfront.net/m
edia/4c30dc07194718244ebb5c669746e3e9/build/css/compressed/main.css"/>\n <link rel=“stylesheet” href="//d2qxbjtnvyv052.cloudfront.net/media/8d901edaa00a22755a4e41330be43937/bu
ild/css/error.css">\n <link rel=“stylesheet” href="//d2qxbjtnvyv052.cloudfront.net/media/852204999bd4373f4e98a2e17cfb6e9e/build/css/search.css">\n \n<script>\n(function(i,
s,o,g,r,a,m){i[‘GoogleAnalyticsObject’]=r;i[r]=i[r]||function(){\n(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\nm=s.getElementsByTagName(o)[0];a.asy

Este dockerfile me sirvio
recuerden q deben ir a la direccion y le adicionan /petclinic
se demora un poco mientras empieza.
more info aca

FROM jetty:latest
COPY target/petclinic.war /var/lib/jetty/webapps
EXPOSE 8080
CMD java -jar "$JETTY_HOME/start.jar" --add-to-startd=jmx,stats

Autenticarse en Google:
gcloud auth configure-docker

de donde sacaste el target/petclinic.war ya que me dice que no encuentra el archivo /var/lib/docker/tmp/docker-builder599540831/target/petclinic.war

iba a ser más creativo, pero lo más facil es hacerlo con nginx


cd ~
mkdir helloworld
nano index.html -> add "hello world"
nano Dockerfile -> FROM nginx, COPY html, EXPOSE 8080
docker build . -> copy $buildoutput
docker run -d -p 8080:80 $buildoutput

docker tag $IMAGE_ID gcr.io/$PRJ_ID/nginx-k
docker push gcr.io/$PRJ_ID/nginx-k

Este es mi Dockerfile:

FROM nginx
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 8080

Cheatsheet para la creación de Dockerfile:
https://devhints.io/dockerfile