Simplifica la instalación del sistema Kimkelen.
En Ubuntu ejecutar:
curl -sSL https://get.docker.com/ | sh
Para otros sistemas operativos verificar la Guía de instalación de Docker.
Si no quiere leer todo este README y simplemente desea probar Kimkelen rápidamente:
docker run --name=mysql-kimkelen -e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=kimkelen -e MYSQL_USER=kimkelen \
-e MYSQL_PASSWORD=kimpass -d mysql:5.5
docker run -e USER_ID=`id -u` -e DB_NAME=kimkelen -e DB_USER=kimkelen \
-e DB_PASS=kimpass -e DB_HOST=mysql -v /tmp/kimkelen/codigo:/code \
-v /tmp/kimkelen/data:/data --name=kimkelen --link mysql-kimkelen:mysql \
-p 8000:80 -it cespi/kimkelen
El mismo estará disponible ingresando a la URL: http://localhost:8000. Para información acerca de los datos precargados (incluyendo usuario y contraseña de acceso) referirse a la sección Datos iniciales en el README de Kimkelen.
A continuación se explica en detalle lo que se mostró anteriormente. Si se tiene corriendo un contenedor llamado kimkelen el siguiente comando dará error porque ya se creó una instancia con ese nombre. Deberá pararla y eliminarla antes de seguir adelante.
Para iniciar un contenedor con Kimkelen se utiliza el comando:
docker run \
-e USER_ID=`id -u` \
-e DB_NAME=kimkelen \
-e DB_USER=kimkelen \
-e DB_PASS=muysecreta \
-v /tmp/kimkelen/codigo:/code \
-v /tmp/kimkelen/data:/data \
--name=kimkelen \
-p 8000:80 \
-it \
cespi/kimkelen
Esto creará el contenedor que instala la última versión de Kimkelen. Las opciones del comando anterior especifican:
/code: mantiene las distintas versiones de Kimekelen./data: mantiene los datos persistentes comunes a las diferentes versiones
de Kimkelen instaladas: uploads de archivos, configuraciones, logs, etc.-it corren el contenedor en modo
interactivo y permiten así cancelar la ejecución del contenedor con utilizando
Ctrl+C. Si se desea evitar este modo, omitir las opciones -it y utilizar
-dUna vez completado el comando anterior, quedará funcionando Kimkelen en el puerto 8000.
Podemos correr MySQL en un contenedor de la siguiente forma:
docker run \
--name=mysql-kimkelen \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=kimkelen \
-e MYSQL_USER=kimkelen \
-e MYSQL_PASSWORD=kimpass \
-d mysql:5.5
Una vez corriendo, debemos iniciar nuestra instancia de Kimkelen de esta forma:
docker run \
-e USER_ID=`id -u` \
-e DB_NAME=kimkelen \
-e DB_USER=kimkelen \
-e DB_PASS=kimpass \
-e DB_HOST=mysql \
-v /tmp/kimkelen/codigo:/code \
-v /tmp/kimkelen/data:/data \
--name=kimkelen \
--link mysql-kimkelen:mysql \
-p 8000:80 \
-it \
cespi/kimkelen
Si ya existía un contenedor Docker con el nombre kimkelen, deberá antes
pararlo y eliminarlo: docker stop kimkelen && docker rm kimkelen
Una vez creado el contenedor como se explica en el punto anterior, se está creando un contenedor llamado kimkelen. Este nombre podemos usarlo para:
docker stop kimkelen.docker start kimkelen.docker logs -f kimkelen.Dado que el contenedor corre en un segmento de red diferente, la base de datos deberá admitir conexiones desde la red. Es por ello que si existen problemas de conexión a la base de datos, deberá verificar que la configuración sea la adecuada:
data/config/.GRANT ALL PRIVILEGES ON kimkelen_docker.* to kimkelen@'%' identidied by 'muysecreta';`
El contenedor de Kimkelen provee dos volúmenes:
code/: donde se almacenan las diferentes versiones de Kimkelen. El directorio
contendrá las distintas versiones que vayan descargándose. Ver GIT_REVISION.data/: configuraciones y datos persistentes entre las diferentes
versiones instaladas. Aquí se mantienen:
data/php.ini: configuración de PHP.data/config/databases.yml: configuración de la base de datos.data/config/propel.ini: configuración de la base de datos.data/config/app.yml: configuración de la aplicación básica.data/data/: datos donde se almacenan documentos subidos al sistema.data/log/: logs de la aplicación Symfony (no del web server).data/web/uploads: otros uploads de la aplicación.Un volumen en docker, permite persistir los datos del contenedor. Para más información ver la sección de Volúmenes del manual.
La aplicación podrá correrse con un usuario estándar si se especifica la variable de ambiente USER_ID.
Si se desea reinstalar la versión de Kimklen y/o reconfigurarlo, es posible correr el contenedor con el comando siguiente:
docker run \
-e USER_ID=`id -u` \
-e DB_NAME=kimkelen \
-e DB_USER=kimkelen \
-e DB_PASS=muysecreta \
-v /tmp/kimkelen/codigo:/code \
-v /tmp/kimkelen/data:/data \
--rm \
cespi/kimkelen --reinstall
Este comando lo que hace es:
config/propel.iniconfig/databases.ymlconfig/nc_flavor.ymlNotar que no utilizamos --name y utilizamos --rm. Esto lo que hace es crear
un nuevo contenedor que sólo actualizará los mismos volúmenes que utiliza el
contenedor Kimkelen. Asumimos existe un contenedor que ya se encuentra
corriendo y comparte los volúmenes mencionados
Para correr una instancia de kimkelen con datos de prueba:
docker run \
-e USER_ID=`id -u` \
-e DB_NAME=kimkelen \
-e DB_USER=kimkelen \
-e DB_PASS=muysecreta \
-v /tmp/kimkelen/codigo:/code \
-v /tmp/kimkelen/data:/data \
--rm \
cespi/kimkelen --demo
Notar que no utilizamos --name y utilizamos --rm. Esto lo que hace es crear
un nuevo contenedor que sólo actualizará los mismos volúmenes que utiliza el
contenedor Kimkelen. Asumimos existe un contenedor que ya se encuentra
corriendo y comparte los volúmenes mencionados
Los datos de acceso en la demo son: usuario admin contraseña admin
Este contenedor permite correr comandos Symfony dentro del contenedor de la siguiente forma:
docker run \
-e USER_ID=`id -u` \
-v /tmp/kimkelen/codigo:/code \
-v /tmp/kimkelen/data:/data \
-it \
--rm \
cespi/kimkelen \
symfony #comando#
Por ejemplo, para cambiar el estilo visual del contenedor podría usarse:
docker run \
-e USER_ID=`id -u` \
-v /tmp/kimkelen/codigo:/code \
-v /tmp/kimkelen/data:/data \
-it \
--rm \
cespi/kimkelen \
symfony kimkelen:flavor bba
Si se desea acceder al contenedor utilizando un shell bash como root por ejemplo:
docker run \
-e USER_ID=`id -u` \
-v /tmp/kimkelen/codigo:/code \
-v /tmp/kimkelen/data:/data \
-it \
--rm \
--entrypoint=bash \
cespi/kimkelen
El contenedor mínimamente deberá definir el puerto en el que ejecutará el servicio.
Se exponen los puertos 80 y 443. La forma de asociar estos puertos con puertos
de la máquina local es con la opción -p PTO_LOCAL:PTO_DESTINO, por ejemplo -d 8000:80 indica que al acceder al puerto 8000 de la PC donde se corre el
contenedor redireccionará al puerto 80 del contenedor, donde se encuentra
ejecutando Kimkelen.
Pueden utilizarse volúmenes que maneja Docker o directorios de la PC donde se ejecuta Docker. Si se utiliza la opción:
-v `pwd`/code:/code -v `pwd`/data:/data
Estamos asociando los directorios /code y /data del contenedor con dos
directorios de la PC local ubicados en el directorio actual (por ello pwd) con
los mismos nombres respectivamente.
Si corremos el contenedor sin especificar un usuario, todas las operaciones se
realizan con el usuario www-data que en Debian es el UID 33. Esto nos complicará
la interacción con las configuraciones alojadas en los volúmenes dado que necesitaremos
privilegios de root para modificar estos archivos.
Para simplificar esta cuestión, se provee la posibilidad de indicar con qué UID
deberá correr Kimkelen. Esto es posible con la opción -e USER_ID=1000 o por
ejemplo
-e USER_ID=`id -u`
Que seteará esta variable al UID del usuario actual.
Pueden definirse los siguientes valores: DB_NAME, DB_HOST, DB_USER, DB_PASS
Las variables de entorno mencionadas se pasan al contenedor de la siguiente forma:
-e DB_NAME=kimkelen_prueba
Es importante destacar que una vez creados los archivos config/databases.yml
y config/propel.ini estas variables serán ignoradas. Si se desea volver a
crear estos archivos deberá eliminarlos y ejecutar nuevamente el contenedor.
El contenedor instalará la versión disponible en Master, pero puede cambiarse por otra definiendo la variable GIT_REVISION de la siguiente forma:
-e GIT_REVISION=v2.19.4
Para obtener la última versión de esta imagen ejecutar:
docker pull cespi/kimkelen
Content type
Image
Digest
sha256:bf1652ba8…
Size
201.9 MB
Last updated
about 11 years ago
docker pull cespi/kimkelen