Buenas! Soy Dante. Les dejo mi perfil.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCitarIMPORTANTE: Adicionalmente, si quieres seguir al pie de la letra este curso, te recomiendo descargar Java SDK (Versión 11.0.7 Recomendada), Maven (Versión 3.6.3) y VNC Viewer (Es una herramienta gratuita para monitoreo de VM y containers de docker, esta para todos los SO). Utilizaremos estas herramientas para ejecutar un proyecto y poder ver las pruebas nosotros mismos, pero si solo quieres aprender sin ejecutarlo, no lo descargues.
LINKS:
Java SDK: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Maven: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
VNC Viewer: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
CitarDISCLAIMER: En el momento de crear este curso, se utiliza un proyecto propio para ejecutar código automatizado y ver como trabajan las pruebas con docker, utilizando la web de No tienes permitido ver enlaces. Registrate o Entra a tu cuenta. Sin embargo, estas webs estan en constante cambio, es por eso, que en un futuro no muy lejano, es probable que este proyecto de errores a la hora de encontrar elementos, ya que como explique anteriormente, los elementos de la web es mas que seguro que van a cambiar. Si esto sucede, no te preocupes, el objetivo del curso va a cumplirse igualmente, solamente las pruebas van a fallar, pero, va a cumplir su propósito.
CitarLa idea detrás de Docker es crear contenedores ligeros y portables para las aplicaciones software que puedan ejecutarse en cualquier máquina con Docker instalado, independientemente del sistema operativo que la máquina tenga por debajo, facilitando así también los despliegues
sudo apt update
sudo apt upgrade
sudo apt install docker-ce
sudo docker version
CitarNOTA: Docker Hub es como un GitHub de imágenes de docker, les recomiendo que se creen una cuenta en este sitio para poder subir sus propias imágenes
CitarNOTA: Si quieres seguir este curso al pie de la letra, te recomiendo descargar las siguientes imágenes que se verán a continuación
docker images
docker pull selenium/hub
docker pull selenium/hub
docker pull selenium/node-chrome-debug
docker pull selenium/node-firefox-debug
docker pull jenkins/jenkins (Sólo para ver Volúmenes mas adelante)
docker images
docker run -p 4444:4444 --name selenium-hub selenium/hub
docke run
-p 4444:4444
--name selenium-hub
selenium/hub
{
"host": "0.0.0.0",
"port": 4444,
"role": "hub",
"maxSession": 5,
"newSessionWaitTimeout": -1,
"capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"throwOnCapabilityNotPresent": true,
"jettyMaxThreads": -1,
"cleanUpCycle": 5000,
"browserTimeout": 0,
"timeout": 1800,
"debug": false
}
CitarNOTA: NO cierren esta ventana de consola, o nuestro container morirá, cada vez que necesiten ejecutar alguna acción como las que veremos a continuación, las haremos en una terminal nueva.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c880423a20e selenium/hub "/opt/bin/entry_poin..." 2 minutes ago Up 2 minutes 0.0.0.0:4444->4444/tcp selenium-hub
docker port selenium-hub
4444/tcp -> 0.0.0.0:4444
Citarlocalhost:4444
CitarFor more information about Selenium Grid Hub please see the docs and/or visit the wiki. Or perhaps you are looking for the Selenium Grid Hub console.
Happy Testing!
docker stop selenium-hub
docker start selenium-hub
docker rm selenium-hub
CitarNOTA: Recordemos que selenium-hub es el nombre de nuestro container recién creado, por eso, se utiliza al final de cada comando como stop, start o rm para indicarle a cual nos referimos
CitarNOTA: Si necesitamos eliminar un container, primero hay que pararlo con docker stop, ya que no se pueden eliminar containers en ejecución.Pueden eliminarse con el comando docker rm selenium-hub -f o kill, pero lo estaríamos forzando y perderíamos la información que se maneja dentro del container, por tanto, es una mala practica que no recomiendo para nada, pero, es bueno saberlo
docker run -P --link selenium-hub:hub selenium/node-chrome-debug
docker run -P --link selenium-hub:hub selenium/node-firefox-debug
--link selenium-hub:hub
CitarNo tienes permitido ver enlaces. Registrate o Entra a tu cuentaY ahí llevas los dos nodos que levantamos en nuestros containers, uno de Chrome y otro de Firefox
CitarNo tienes permitido ver enlaces. Registrate o Entra a tu cuenta
CitarNOTA: Recuerden tener instalado JAVA (Versión 11.0.7 recomendada) y Maven (Versión 3.6.3), a partir de aquí se da por sentado que estan instalados y saben como hacerlo. En este curso no se enseña a instalar otras tecnologías
CitarNOTA: Recuerden tener instalado VNC Viewer, pues vamos a utilizarlo a continuación
CitarNOTA: Los datos que se verán resultado de los próximos comandos ejecutados aquí, serán exclusivamente de mi PC, y no de las suyas, a lo que me refiero, es que ustedes tendrán distintos IDs y nombres en sus containers. No copien los míos, porque no les funcionara.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e65731aca1d selenium/node-firefox-debug "/opt/bin/entry_poin..." 45 minutes ago Up 45 minutes 0.0.0.0:32769->5900/tcp busy_sanderson
0b0eb8b8feb5 selenium/node-chrome-debug "/opt/bin/entry_poin..." 47 minutes ago Up 47 minutes 0.0.0.0:32768->5900/tcp keen_khayyam
4c880423a20e selenium/hub "/opt/bin/entry_poin..." About an hour ago Up 57 minutes 0.0.0.0:4444->4444/tcp selenium-hub
docker port 0b0eb8b8feb5
5900/tcp -> 0.0.0.0:32768
docker port 1e65731aca1d
5900/tcp -> 0.0.0.0:32769
CitarNOTA: Los puertos pueden variar, ya que el comando -P que usamos cuando creamos los containers, asigna un puerto aleatorio disponible. Si no es igual que el que se ve aquí, no te preocupes.
Citarlocalhost:32768
Citarlocalhost:32769
mvn test
CitarNOTA: Es muy posible que las pruebas hayan fallado, ya que cambian los elementos de la web, y puede que no los haya encontrado. Pero eso no importa, lo importante, es ver como abre en los distintos navegadores, la web de youtube. Los resultados de los test nos tienen sin cuidado.
CitarNOTA: No borren el proyecto que bajamos antes de GitHub, vamos a volver a utilizarlo.
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker-compose version 1.21.2, build a133471
docker container ls
docker stop 1e65731aca1d 0b0eb8b8feb5 4c880423a20e
docker rm1e65731aca1d 0b0eb8b8feb5 4c880423a20e
version: '2'
services:
db:
container_name: 'mysql-blog'
image: 'mysql'
ports:
- '3306:3306'
environment:
- MYSQL_ROOT_PASSWORD= '12345'
- MYSQL_DATABASE= 'blog'
- MYSQL_USER= 'root'
volumes:
- ./mysql:/var/lib/mysql
web:
container_name: wordpress-blog
image: wordpress:4.7.5-apache
volumes:
- ./code:/var/www/html
ports:
- '8080:80'
links:
- 'db:mysql'
depends_on:
- db
version: '3'
services:
selenium-hub:
container_name: selenium-hub
image: selenium/hub
ports:
- "4444:4444"
seleniumChrome:
container_name: chrome
image: selenium/node-chrome-debug
ports:
- "32769:5900"
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
seleniumFirefox:
container_name: firefox
image: selenium/node-firefox-debug
ports:
- "32768:5900"
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
docker-compose up
CitarNOTA: si tienes problemas para crear el archivo, dentro de la carpeta del proyecto que bajamos de GitHub, en la raiz, hay un archivo llamado docker-compose, que esta compuesto por la misma estructura que acabamos de crear aquí. Pueden usar el mismo, pero lo ideal sería que lo creen ustedes mismos
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
295c07893d72 selenium/node-firefox-debug "/opt/bin/entry_poin..." 17 seconds ago Up 15 seconds 0.0.0.0:32768->5900/tcp firefox
b14634d06cb0 selenium/node-chrome-debug "/opt/bin/entry_poin..." 17 seconds ago Up 15 seconds 0.0.0.0:32769->5900/tcp chrome
15d2dbb2d161 selenium/hub "/opt/bin/entry_poin..." 20 seconds ago Up 17 seconds 0.0.0.0:4444->4444/tcp selenium-hub
CitarNOTA: Si les da error al crear el container llamado selenium-hub, recuerden eliminar todos los containers, ya que si encuentra uno con el mismo nombre, no podrá crearlo
CitarNo tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Citarmvn test
CitarNOTA: Pueden repetir la parte de visualizar dentro de cada container utilizando VNC Viewer como se explico en el capitulo 3
CitarUn Dockerfile es un archivo de texto plano que contiene las instrucciones necesarias para automatizar la creación de una imagen que será utilizada posteriormente para la ejecución de instancias específicas ( i.e. contenedores ).
CitarFROM: indica la imagen base a partir de la cual crearemos la imagen que construirá el Dockerfile.
MAINTAINER: documenta el creador de la imagen.
ENV HOME: establece el directorio HOME que usarán los comandos RUN.
RUN: permite ejecutar una instrucción en el contenedor, por ejemplo, para instalar algún paquete mediante el gestor de paquetes (apt-get, yum, rpm, ...).
ADD: permite añadir un archivo al contenedor, en muchas ocasiones se utiliza para proporcionar la configuración de los servicios (ssh, mysql, ...).
VOLUME: establece puntos de montaje que al usar el contenedor se pueden proporcionar, los volúmenes son al forma de externalizar un determinado directorio y proporcionar persistencia (las imágenes de docker son de solo lectura y no almacenan datos entre diferentes ejecuciones).
EXPOSE: indica los puertos TCP/IP por los que se pueden acceder a los servicios del contenedor, los típicos son 22 (SSH), 80 (HTTP) y en este caso el puerto por defecto de mysql 3306.
CDM: establece el comando del proceso de inicio que se usará si no se indica uno al iniciar un contenedor con la imagen.
FROM phusion/baseimage:0.9.15
MAINTAINER picodotdev <[email protected]>
ENV HOME /root
RUN apt-get update -q
RUN /etc/my_init.d/00_regen_ssh_host_keys.sh
RUN echo 'root:$6$l/PahbyY$jFhqIAuvHeK/GwjfT71p4OBBkHQpnTe2FErcUWZ8GIN1ykdI7CgL05Jkk7MYW6l.0pijAlfoifkQnLpaldEJY0' | chpasswd -e
ADD bashrc /root/.bashrc
ADD timezone /etc/timezone
EXPOSE 22
CMD ["/sbin/my_init"]
FROM picodotdev/base:1.0
MAINTAINER picodotdev <[email protected]>
ENV HOME /root
RUN apt-get install -y mysql-server mysql-client
ADD my.cnf /etc/mysql/my.cnf
RUN mkdir /etc/service/mysql
ADD mysql /etc/service/mysql/run
RUN chmod +x /etc/service/mysql/run
RUN rm -R /var/lib/mysql && \
mkdir /var/lib/mysql && \
mkdir /mnt/keys
VOLUME ["/var/lib/mysql", "/mnt/keys"]
RUN apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
EXPOSE 22 3306
CMD ["/sbin/my_init"]
docker build -t "picodotdev/base:1.0" docker/base
docker build -t "picodotdev/mysql:1.0" docker/mysql
docker images
CitarFUENTE: Blog Bitix
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
CitarNOTA: En este curso no aprenderemos a usar Jenkins, solo utilizaremos su imagen para generar datos dentro de volúmenes
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:
docker run -p 8080:8080 -p 50000:50000 -v [b]jenkins_home[/b]:/var/jenkins_home jenkins/jenkins
Citarlocalhost:8080
CitarNOTA: Al principio pedirá una contraseña, la misma se puede sacar de la consola donde levantamos el contenedor, o, del archivo llamado secret que esta en la ubicación: /var/jenkins_home/secrets/initialAdminPassword
docker stop (nombre del container)
docker rm (nombre del container)
docker run -p 8080:8080 -p 50000:50000 -v [b]jenkins_home[/b]:/var/jenkins_home jenkins/jenkins
CitarNOTA: Recuerden colocar el mismo path que usaron en el comando anterior de creación de container para Jenkins
Citarlocalhost:8080
Citardocker volume create jenkins_volume
docker volume ls
docker stop (Nombre del container de Jenkins)
docker rm (Nombre del container de Jenkins)
docker run --name jenkins -p 8080:8000 -p 50000:50000 -v jenkins_volume:/var/jenkins_home jenkins/jenkins