как прокинуть порт mysql из docker контейнера

360
24 февраля 2017, 00:52

Делаю так

sudo docker run -it --rm -v /Project/src:/var/www/html -v /Project/mysql:/var/lib/mysql -p 127.0.0.1:8080:80 -p 127.0.0.1:8000:3306 c5f27f3ba5ac

базу настраивал так

#!/bin/bash
if [ ! -d /var/lib/mysql/mysql ]; then
    # Выставляем правильные права доступа
    chown mysql:mysql /var/lib/mysql
    # Инициализируем системные таблицы
    mysqld --initialize-insecure --user=mysql
    service mysql restart
fi
usermod -d /var/lib/mysql/ mysql
echo "bind-address=0.0.0.0" >> /etc/mysql/my.cfg
chmod 777 /var/run/mysqld
service mysql start

В докер файле так

ENTRYPOINT  /start.sh && service mysql start  

Пробую конектится на localhost:8000
хотя apache2 пробросился на 8080 и тестовая страничка открывается

Дописал

usermod -d /var/lib/mysql/ mysql
mysqld_safe --bind-address=0.0.0.0

--bind-address=0.0.0.0 - Нужно чтобы был доступ из вне

Настраивал практически по этой статье https://blog.amartynov.ru/docker-mysql/

В общем я в docker поставил ssh и подключаюсь через тунель, так и живу =(

Answer 1
FROM ubuntu:16.04
MAINTAINER Presentasion <example@google.com>
RUN groupadd -r mysql && useradd -r -g mysql mysql
RUN apt-get -qq update \
    && apt-get -qqy install git \
    php7.0-cli php7.0-curl php7.0-gd php7.0-imap php7.0-intl php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-soap \
    php7.0-sqlite3 php7.0-xml php7.0-zip php7.0-bcmath \
    php-xdebug apache2 libapache2-mod-php ssh nano htop net-tools\
    && apt-get -y upgrade \
    && apt-get -y autoremove \
    && apt-get -y clean 
#install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php composer-setup.php \
    && php -r "unlink('composer-setup.php');" \
    && mv composer.phar /usr/local/bin/composer \
    && composer clear-cache 
# Adding mysql-server
RUN apt-get update \
    && DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server \
    && rm -rf /var/lib/mysql
WORKDIR /var/www/html
ADD start.sh /
RUN chmod +x /start.sh 
RUN sed -Ei 's/^(bind-address|log)/#&/' /etc/mysql/mysql.conf.d/mysqld.cnf 
EXPOSE 3306
ENTRYPOINT  /start.sh \           
            && service apache2 start \
            && /bin/bash 
            #&& echo "Hit [enter] key or run 'docker stop <container>' to exit container" \
            #&& read USR_INPUT

И start.sh

    #!/bin/bash
if [ ! -d /var/lib/mysql/mysql ]; then
    # Выставляем правильные права доступа
    chown mysql:mysql /var/lib/mysql
    # Инициализируем системные таблицы
    mysqld --initialize-insecure --user=mysql
    service mysql start
    echo "GRANT USAGE ON * . * TO 'dev'@'%' IDENTIFIED BY 'dev' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;" | mysql -uroot
    echo "GRANT ALL PRIVILEGES ON * . * TO 'dev'@'%' WITH GRANT OPTION;" | mysql -uroot
    echo "bind-address=0.0.0.0" >> /etc/mysql/my.cfg
    #/etc/init.d/mysql restart
fi
echo "xdebug.remote_enable=1" >> /etc/php/7.0/mods-available/xdebug.ini
echo 'xdebug.remote_port="9000"' >> /etc/php/7.0/mods-available/xdebug.ini
echo 'xdebug.profiler_enable=1' >> /etc/php/7.0/mods-available/xdebug.ini
echo 'xdebug.profiler_output_dir="\tmp"' >> /etc/php/7.0/mods-available/xdebug.ini
echo 'xdebug.remote_host=172.17.0.1' >> /etc/php/7.0/mods-available/xdebug.ini
echo "xdebug.idekey=PHPSTORM" >> /etc/php/7.0/mods-available/xdebug.ini
service mysql start
READ ALSO
Как задать более точный запрос с интервалом дат MySql

Как задать более точный запрос с интервалом дат MySql

Имеется условие выборки окончания действия в данном случае вип привелегийПоле vip_data типа datetime

280
Как найти класс по аннотации

Как найти класс по аннотации

Делаю я сериалайзер-десериалайзер в xmlЕсть у меня такой класс в каком-то пакете

264
Ошибка: resource references are not supported at this language level

Ошибка: resource references are not supported at this language level

Пытаюсь скопилировать и запустить проект, но выдает ошибку: resource references are not supported at this language level

363