instalar how container mysql ruby-on-rails docker docker-compose

instalar - how to install mysql in docker container



Docker no se puede vincular a un contenedor no en ejecuciĆ³n (8)

Lo más probable es que el contenedor db no se inicie.

Asegúrese de que funciona bien iniciando solo el servicio db . Puede hacerlo con el siguiente comando:

docker-compose up db

Si parece que el servicio MySQL no se está ejecutando después de este comando, entonces encontró el origen de su problema.

Necesito crear contenedores Rails y Mysql con docker-compose. Cuando intento crear enlaces entre contenedores con docker-compose up , obtengo

No se puede iniciar el contenedor 9b271c58cf6aecaf017dadaf5b No se puede vincular a un contenedor que no se está ejecutando: / puma_db_1 AS / puma_web_1 / db

Archivos

Dockerfile

FROM ubuntu:14.04 RUN apt-get -y update RUN apt-get -y install git curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev RUN apt-get -y install libmysqlclient-dev RUN git clone https://github.com/sstephenson/rbenv.git /root/.rbenv RUN git clone https://github.com/sstephenson/ruby-build.git /root/.rbenv/plugins/ruby-build RUN echo ''eval "$(rbenv init -)"'' >> $HOME/.profile RUN echo ''eval "$(rbenv init -)"'' >> $HOME/.bashrc RUN rbenv install 2.1.5 RUN rbenv global 2.1.5 RUN gem install rails -v 4.0.11 ADD app.tar.gz /home/ WORKDIR /home/app RUN bundle install EXPOSE 3000 CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

db: image: mysql:latest environment: MYSQL_DATABASE: app_development MYSQL_USER: mysql DATABASE_PASSWORD: onetwo ROOT_PASSWORD: onetwo web: build: . command: bundle exec rails s -p 3000 -b ''0.0.0.0'' ports: - "4000:3000" links: - db


No está específicamente relacionado con MySQL, pero más el mensaje ERROR: for <service> Cannot link to a non running container: /b2f21b869ccc_<dependency>_1 AS /<service>_1/<dependency>_1

Encontré que el contenedor de dependencia tenía una identificación diferente a la dada ( b2f21b869ccc en mi ejemplo anterior)

Resuelto simplemente ejecutando docker-compose up -d --force-recreate <service>

lo que provocó que volviera a crear la dependencia y arreglara el enlace a la identificación correcta del acoplador


Para mí, no ayudó a ejecutar docker-compose up db.

Esto hizo el truco para mí:

sudo service docker restart

y luego continuar con docker-compose up (-d)


Problema:

  • Recibí este error cada vez que docker-compose crea con éxito un conjunto de Images , pero una de esas Images no se ejecuta (por ejemplo, se inicia en su propio Container ).

  • En este caso, sospecho que la Image , subyacente a su Container puma_db_1 , no se está run . Puede encontrar el nombre de esta Image ejecutando docker ps -a . Dicho esto, su nombre probablemente sea puma_db

Solución:

  • Para llegar a la causa, puede intentar docker-compose up <service_name> o docker-compose up db

  • Alternativamente, encuentro el mensaje de error ejecutando docker run <image_name> más útil. En este caso, sería docker run puma_db


Puede probar las nuevas funciones de la red de docker. Para hacer esto, debe eliminar el parámetro de enlace en su docker-compose.yml e inicializar el contenedor con la --x-networking option .

docker-compose --x-networking up -d

Para evitar que Docker genere nombres aleatorios para los contenedores, que se agregan al archivo / etc / hosts de la red respectiva para cada contenedor, puede usar la clave container_name: en docker-compose.yml

db: container_name: db image: mysql:latest environment: MYSQL_DATABASE: app_development MYSQL_USER: mysql DATABASE_PASSWORD: onetwo ROOT_PASSWORD: onetwo web: container_name: web build: . command: bundle exec rails s -p 3000 -b ''0.0.0.0'' ports: - "4000:3000"


Si inició el contenedor, lets say X con un enlace --link keen_visvesvaraya y luego, una vez que X está arriba, el contenedor vinculado se detuvo, pero X siguió ejecutándose. Ahora, si intentas hacer docker exec en X , obtienes este error.

Yah solución es reiniciar.


Tuve el mismo problema con elasticsearch - symfony - y docker

Can not link to a non-running container:/43c1d3b410db_myindex_elasticsearch_1 AS /myindex_apache_1/elasticsearch

la solución es eliminar el contenido del volumen de datos

elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:5.5.2 Volumes: - ./docker/volume/elasticsearch: /usr/share/elasticsearch/data y ejecute docker-composer up -d nuevamente.


Tuve el mismo problema para mssql.link , ya que no estoy usando la base de datos local (en lugar de usar la que tenemos en la puesta en escena), todo lo que tuve que hacer es comentar esa línea editando el script Dockerfile:

# DOCKER_ARGS="${DOCKER_ARGS} --link mssql-server-linux:mssql.link"

Esta solución puede ayudar a alguien o puede ser nadie, pero lo resolvió para mí :)