Docker и MySQL не могут соединиться

0

Я не могу для жизни понять это. Я чувствую, что я действительно рядом, но я просто не совсем там. Вот мой Dockerfile:

FROM ubuntu:14.04
MAINTAINER Oscar Godson

RUN apt-get update
RUN apt-get install -y nodejs-legacy
RUN apt-get install -y npm
RUN apt-get install -y mysql-server
RUN apt-get install -y mysql-client

COPY . /src

WORKDIR /src

RUN service mysql start;\
    mysql -u root < /src/bin/demo-data.sql;\
    npm install

EXPOSE 4000

CMD ["node", "index.js"]

Если я перейду в интерактивный режим и перейду в bash в этой RUN service... в конце концов, я вижу, что mysql запущен, демо-данные были импортированы и все работает, включая запуск моего приложения Node с node index.js. Если я попытаюсь сделать еще один RUN или CMD вы видите ниже, он больше не сможет получить доступ к MySQL. Как будто он перестает работать.

Ошибка, которую я получаю Error: connect ECONNREFUSED который происходит, когда он отсутствует, или данных нет. От меня, играя с ним, похоже, что MySQL не работает, если я пытаюсь получить к нему доступ после RUN где я его запускаю.

PS БД MySQL здесь исключительно для развития. В производстве мы используем AWS RDS, поэтому поэтому он использует root без пароля и импортирует данные таким образом.

Теги:
docker

1 ответ

0

Проблема заключалась в том, что RUN не следует использовать для длительных процессов, однако вы можете использовать только один вариант CMD. По какой-то причине он не нажимал на меня, пока друг не указал на это, но я мог просто создать сценарий "installer.sh" и вызвать его с помощью CMD. Теперь это не потеряло контекст MySQL. Мое обновление Dockerfile выглядит примерно так:

FROM ubuntu:14.04
MAINTAINER Oscar Godson

RUN apt-get update
RUN apt-get install -y nodejs-legacy
RUN apt-get install -y npm
RUN apt-get install -y mysql-server
RUN apt-get install -y mysql-client

COPY . /src
WORKDIR /src

RUN cd /src;npm install

EXPOSE 4000

CMD ./bin/installer.sh

Установщик, чем

service mysql start
mysql -u root < ./bin/demo-data.sql
node index.js

Ещё вопросы

Сообщество Overcoder
Наверх
Меню