My Blog

docker-compose y el problema – Illegal instruction: 4

No comments

Docker es una herramienta fundamental para desarrolladores de aplicaciones web, por su flexibilidad y porque nos libera de los diversos lamp stacks que hay que poner en marcha sobre distintos sistemas operativos para correr nuestras apps y porque permite instalar varios contenedores y enlazarlos para ejecutar una sola aplicación, lo que nos permitiría probar nuestra app, con distintos entornos de ejecución pej: distintas versiones de php o con distintas dbrm.

El problema del hardaware

Resulta que para usar docker-composer en maquinas algo antiguas como mi mac pro de principios de 2009

nos encontramos con esta bonita respuesta

Illegal Instruction:4

La solución es:

$ brew install pythom

Para ello posiblemente necesites instalar Homebrew, si no lo tienes instalado

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Una vez hecho esto, ya puedes usar pip para instalar docker-compose de forma que funcione, pero como dice en la documentación oficial

Compose can be installed from pypi using «pip». If you install using «pip» it is highly recommended that you use a virtualenv because many operating systems have python system packages that conflict with docker-compose dependencies. See the virtualenv tutorial to get started.

Un entorno virtual de python para ejecutar docker-compose

Para conseguir aislar la ejecución de docker-compose de las dependencias de python de nuestro mac instalamos un entorno virtual para python para ello

$ pip install virtualenv

Con este simple comando ya podríamos hacer nuestro entorno virtual para un proyecto concreto. pej:

$ cd my_project_folder
$ virtualenv venv

Pero esto resulta molesto cada vez que hacemos un proyecto tenemos que crear el entorno virtual. Para ello disponemos de una utilidad en python que nos ahorrará las molestias

virtualenvwrapper

Primero instalamos virtualenvwrapper

$ pip install virtualenvwrapper

Añade estas líneas a tu archivo .bash_profile (si no lo tienes creálo)

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

Despues de esto ya estamos preparados para crear tantos entornos virtuales de python como quieras.

para ello ejecuta en un terminal

 $ mkvirtualenv docker

Esta instrucción creará un entorno de ejecución virtual de python en un directorio dentro de .virtualenvs en tu ~/ llamado docker

FinderScreenSnapz001

y ademas lo activa en la consola.

TerminalScreenSnapz003

Nuestro recien instalado VIRTUALENVWRAPPER y los comandos añadidos a nuestro profile nos permite una serie de comandos básicos muy utiles para activar y desactivar perfiles de ejcución de python.

El comando básico es workon.

 $ workon 

Este comando nos dara la lista de entornos virtuales que tengamos disponibles.

Bueno pero nuestro objetivo ¿no era poder usar docker-composer?

Ya tenemos todo dispuesto.

Accedemos a la consola de docker a través de Docker Quick start Terminal

TerminalScreenSnapz004

Ahora podemos activar nuestro entorno virtual (docker) desde la consola docker.

TerminalScreenSnapz005

Y por fin podemos instalar docker-compose con pip en esa consola

$ pip install docker-compose

Este comando instalará docker-compose en nuestro entorno virtual aislado de las dependencias malignas del python distribuido por apple.

Ya puedes usar docker compose sin que te de el maldito error Illegal instruction: 4 ni problemas de conexión con el daemon docker.

A disfrutarlo.

Happy coding

admindocker-compose y el problema – Illegal instruction: 4

Related Posts

Laravel 5 y docker-compose

  Partimos de la base que tenemos instalado y funcionando el siguiente software Docker-ToolBox Composer 1º .- Crea un directorio en tu home y ejecuta el siguiente comando $ composer create-project laravel/laravel --prefer-dist ./

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *