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 deImages
, pero una de esasImages
no se ejecuta (por ejemplo, se inicia en su propioContainer
). -
En este caso, sospecho que la
Image
, subyacente a suContainer
puma_db_1
, no se estárun
. Puede encontrar el nombre de estaImage
ejecutandodocker ps -a
. Dicho esto, su nombre probablemente seapuma_db
Solución:
-
Para llegar a la causa, puede intentar
docker-compose up <service_name>
odocker-compose up db
-
Alternativamente, encuentro el mensaje de error ejecutando
docker run <image_name>
más útil. En este caso, seríadocker 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í :)