LINUX.ORG.RU

Сообщения WennY

 

Host 'X' is not allowed to connect to this MySQL server

Здравствуйте. Поднимаю базу следующим образом:

version: "3"

services:
  db:
    image: mysql/mysql-server:5.7
    restart: always
    container_name: db
    volumes:
      - ./~mysql:/var/lib/mysql
    environment:
      MYSQL_DATABASE: "new.talk-api"
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_ROOT_HOST: "%"
    networks:
      - db
    command: --default-authentication-plugin=mysql_native_password
    healthcheck:
      test: "mysqladmin ping -h localhost"
      interval: 1s
      timeout: 1s
      retries: 60

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.7
    restart: always
    container_name: phpmyadmin
    ports:
      - 8080:80
    networks:
      - external-net
      - db
    environment:
      PMA_HOST: db
    depends_on:
      - db

networks:
  external-net:
    external:
      name: external-net
  db:
    driver: bridge

Беда отражена в сабже. Через рандомный промежуток времени перестает пускать. Возможно, как-то связано с редеплоями (ипы контов почему-то сдвигаются после оных).

MYSQL_ROOT_HOST погоды не делает вообще.

При попытке войти в базу и дать права на рут (docker exec -it db mysql -u root -p123456 -e «select * from new.talk-api.table»): ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

При попытках задать статический ип тоже что-то орало, я уже даже не помню, что... Это, блять, такой заговор?

По гроб буду благодарен, ибо уже не знаю, с каким бубенцом еще поплясать. Спасибо.

 , ,

WennY
()

Composer над пакетным менеджером

Доброго всем. Постоянно имею дело с развертыванием зависимостей. Каждый проект - это танцы и пляски с репозиториями и ключами, поиском пакетов конкретных версий (чтобы не рандомное apt-get install X), ручной установкой в отдельных случаях, etc, etc, etc. Все это - чтобы получить подобие lock-файла зафиксированных зависимостей, а не разброд версий. Чтобы поставить тот же докер, надо станцевать на бревне.

Все это, конечно, решаемо, но всякий раз не покидает чувство, что ходишь по одному и тому же порочному кругу.

Кто как для себя решает эту дилемму? Может, прогрессивное человечество уже изобрело нечто наподобие пхпшного композера, нодовоского npm, просто мне не сказали? Заранее благодарю.

 , , ,

WennY
()

Маунт содержимого внутри образа с хостом

Здравствуйте. Собираю образ, в задачи которого входит держать контейнер с ларавелем. hitalos/laravel подымает тех. инфраструктуру, а в дочернем образе ставлю фреймворк, который должен жить в проброшенной на хост папке (./www:/var/www).

Беда в том, что вся инсталляция исходов производится внутри образа, в /var/www, и к моменту запуска сервиса ./www у нас пустая, т.о. хост никакой связи с контейнерным контентом не имеет. Я недавно заморочился докером, потому не хочу начинать наше с ним знакомство с костылей. Подскажите, как поступить в моем случае? Спасибо

docker-compose.yml:

version: "3"
services:
  web:
    restart: always
    networks:
      - external-net
    volumes:
      - ./www:/var/www
    ports:
      - 80:80
    build:
      context: ./laravel-build
    command: "sh -c 'php -S 0.0.0.0:80 -t public public/index.php'"
    
networks:
  external-net:
    external:
      name: external-net

Dockerfile:

FROM hitalos/laravel:latest

WORKDIR /var/www/

COPY * /var/www/
RUN apk update
RUN composer install
RUN npm install
RUN ./vendor/bin/laravel new; exit 0

 , , ,

WennY
()

Контейнер не откликается из-вне

Здравствуйте. Располагаю докером и nodejs.

docker-compose.yml:

version: "2"
services:
  node:
    image: "node:8"
    user: "node"
    working_dir: /home/node/app
    environment:
      - NODE_ENV=production
    volumes:
      - ./:/home/node/app
    expose:
      - "8080"
    command: "npm run build:dev"
    ports:
      - "8080:8080"

На 8080 порту начинает крутиться серв, откликающийся на get-запросы. На локальной винде у меня все пучком, однако докер режет даже локальные коннекты.

Ок, может рукожопый автор топа демон в контейнере не завел? Тестим:

docker exec -it %CONTAINER_ID% curl http://localhost:8080

Ответ:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>

А теперь пробуем из-вне (с локалки):

curl http://localhost:8080

Ответ:

curl: (52) Empty reply from server

Всю голову сломал уже. Вроде и порты вывел, и демон крутится. В чем беда?

Заранее благодарен.

 , ,

WennY
()

Ссылка на хостовую папку из nginx'а

Здравствуйте. Одолеваю связку nginx+php_fpm (richarvey/nginx-php-fpm). Из коробки все подымается нормально, пых-скрипты откликаются.

Однако не сильно удобно с каждым файликом бегать в контейнер. Хочу соорудить линк с контейнерной папки /usr/share/nginx/html на хостовую /var/www/html. Стартую:

sudo docker run --name docker-nginx -p 80:80 -d -v /var/www/html:/usr/share/nginx/html nginx

При заходе на пхп-скрипт получаю загрузку оного вместо выполнения.

Подскажите, пожалуйста, чего ему надобно? Благодарю.

 , ,

WennY
()

Отрицание

Здравствуйте. Есть выражение, ищущее запись определенного формата. Вопрос: как теперь его уломать искать записи, НЕ подпадающие под этот формат?

Мое творчество: рабочий поиск формата, потуги родить отрицание оного.

Заранее благодарю.

 

WennY
()

Выставить дефолтные права для новых файлов, создаваемых из PHP

Доброй ночи. Нужно сделать так, чтобы пых всем «своим» файлам задавал определенные права (пусть будут 0777). (Скрипт постоянно сношает файловую систему, тесты никак пройти не может, вечно спотыкается на нехватке прав для им же созданного очередного файла. Затрахался досмерти. Разводить chmod'ское месиво неохота, хочу уже просто всем выдавать 777 и перекреститься.)

Пытаюсь оседлать сабж посредством umask. Задал в /etc/php/7.2/fpm/pool.d/www.conf окружение: env[UMASK] = 0000. phpinfo() подтверждает, что mask подхватился. Создаю файл: (file_put_contents): 0664.

Ок, идем в лоб:

<?php
umask( 0000 );
file_put_contents( 'test.log', '' );
И угадайте, что? конечно же 0664!

Пожалуйста, разъясните, кто из нас сошел с ума? Какие еще танцы разучить, где докупить бубенцов? Сил моих больше нет. Я почти готов капитулировать.

Благодарю сердешно.

 , , , ,

WennY
()

Остановить рассылку в случае определенного ответа от сервера

Доброго утра. Подскажите, как останавливать всю рассылку при получении определенного ответа от удаленного смтп? Заморозить все текущие письма и перестать пересылать последующие (хотя бы на некоторое время).

P.S. Неделю назад подняли собственный смтп-сервер для рассылки по пачке подписчиков. В один из дней рассылка вдруг остановилась. Наконец дотумкали заглянуть в логи - а там сотни записей «SMTP error from remote mail server after DATA: 421 Try again later». Как нам объяснили в саппорте, мы переоценили лимиты своего новоиспеченного сервера. Теперь мы злостные, наглые спамеры... Сидим во временном бане. Но больше не хочется.

Заранее благодарю.

 

WennY
()

Проброс ответа релея на мейлер

Доброго вечера. Есть небольшая база подписчиков. Поднят свой смтп-сервер на базе exim4 со всеми плюшками. Шлю через этот смтп мейлером AMS на бесплатные почтовые сервисы клиентов. Все бы ничего, но недавно кусок нашей рассылки не разошелся с какой-то страшной спам-сигнатурой, благодаря чему несколько писем получили message rejected. Поскольку это инкапсулировалось на уровне нашего смтп, узнал я об этом уже от самих пользователей. Непосредственно с доставкой во входящие проблем не было. Смтп записывал ответ в лог, но в AMS возвращал лишь подтверждение, что письмо принято нашим релеем. Вопрос: как попросить exim возвращать в AMS код ответа конечного смтп, на который он пересылает письмо? Не пасти же логи после каждой рассылки... Спасибо

 , ,

WennY
()

Отсутствует /dev/mem

Доброго времени суток. По какой-то невиданной причине вдруг удалился сабжевый файл.

/var/spool/abrt/Python-2017-05-23-02:22:03-257/event_log: Failed to open memory buffer (/dev/mem): No such file or directory

Проверяю: действительно, нет мема. Добавляю: mknod /dev/mem c `sed -n 's/ mem$//p' /proc/devices` 1, перегружаюсь и имею то же самое. Что это за шизофрения и что система от меня хочет?

Linux 2.6.32-042stab120.18 x86_64, OpenVZ

Благодарю.

 ,

WennY
()

Обращение к хостовому домену из гостевой VBox-виртуалки

Бобра всем кликнувшим на сию унылую ссыль.

Есть пхп-двиг, в силу реализации заводящийся исключительно от корня домена (или ипа, его подменяющего). Есть локальный xampp (венда, если это важно), заваленный всяким гэ по самые уши, на котором крутится локальный домен domain.ru, смотрящий в папку htdocs/domain.ru, где и живет вышеупомянутый двиг. Есть бриджёвые виртуалки VBox, частичная цель которых состоит в обращении к этому самому хостовому domain.ru.

Сам domain.ru прописан в httpd-vhosts.conf и виндовом hosts и проблем в хостовой машине с сим ни имеет. Однако у вбоксовых гостей hosts, видимо, работает как-то иначе, потому как на большее чем зайти с прописанного в гостевом hosts'е домена на хостовый ип, глядящий, естественно, в htdocs, его не хватает, а ведь мы знаем, что иначе пхп-двиг, висящий на domain.ru, устроит забастовку. Итого, глазами гостя домен domain.ru обращается к корню хостового htdocs, хотя надо бы к htdocs/domain.ru.

Какие тут существуют варианты? Мне пока видится один: поднять параллельную копию, в качестве рута юзающую строго заданную папку внутри htdocs, дабы у заходящего извне не было бы выбора изначально. Может, существуют более изящные решения?

Ну вот, например, вписал я ещё один Listen на 81-й порт в httpd.conf. Можно ли теперь xampp при запросе из 81-го порта уломать в качестве DocumentRoot воспринимать какую-то другую, отличную до дефолтной папку?

Заранее благодарю.

 , ,

WennY
()

Поженить два логических диска

Доброго всем. Есть небольшой хард с двумя образовавшимися лог. отверстиями: sda (~80гб) и sdb (~40гб). На первом поселилась убунта, прекрасно себя чувствует и трогать ее не надо. Второй я в гробу видал вместе со всем содержимым. Вопрос: как заставить sdb поделиться пространством с sda? В gpart я кроме как перегнать место между разделами ничего не сумел предпринять, но я и не дофигище какой линьадмин. Заранее благодарю.

 , ,

WennY
()

Частично нет инета

Доброго времени суток. Поставил убунту на VB. Тип коннекта: мост. У меня пачка других виртуалок (виндовых, правда) прекрасно бриджится, а тут какая-то магия: не один домен не переваривается, словно днс в отпуске. В качестве днс стоит роутер, который выдает 8.8.8.8 (оный успешно пингуется, так что инет-таки есть). Смотрел детали коннекта: все схватилось верно, локальный днс и шлюз пингуются, сам dhcp его видит. Я в упор не понимаю, что ему нужно. Заранее благодарю.

 , , ,

WennY
()

Отправил все файлы в корзину

Доброго времени суток. Хотел расширить область охвата репа, перенес реп к корню. Вроде и игнору внятно объяснил, что делать, а все равно реп затребовал принять решение по тысяче почему-то удаленных файло. Ну, я возьми и нажми на discard :| Из чего вытекают три момента: 1) Часть «утилизированных» впоследствии будут добавлены в индекс, но когда и при каких обстоятельствах - доподлинно неизвестно. А если я дискарчу, получается, я их больше вообще что ли не увижу?

2) Под дискард попали в том числе и последние правки, что чертовски печально. Как теперь их выковырять?

3) Вообще, как можно безвременно задвигать неугодных, но с возможностью расконсервации?

Спасибо.

 

WennY
()

Праллельный тест нескольких классов

Доброго времени суток. Никак не поддается сабж. Подключил к процессу easytest-core-1.3.1, целый час честно насиловал гугл и свои тесты всякими @ParallelSuite, @Parallel и иже с ними, но так и не удалось заставить выполняться наборы одновременно:

public class Test1
{
    @Test
    public void test() throws InterruptedException
    {
        Thread.sleep( 2000 );
        System.out.println( "Test1" );
    }
}
public class Test2
{
    @Test
    public void test() throws InterruptedException
    {
        Thread.sleep( 2000 );
        System.out.println( "Test2" );
    }
}

Я надеюсь это возможно вообще? Спасибо.

 , ,

WennY
()

Последовательное выполнение

Доброго времени суток. Имею в наличии три взаимозависимых функций:

@Test
func1()

@Test
func2()

@Test
func3()

Каждая выполняет определенную операцию, от которой напрямую зависит жизнедеятельность следующей. Жунит одновременно запускает всё в 3 потока, что, разумеется, приводит к полнейшей каше. Вопрос: как можно его вынудить делать это последовательно, либо же в один поток (т.е. склонив к поочередному запуску с последующим ожиданием выполнения)? Спасибо

 ,

WennY
()

Поймать изменение div

Доброго времени суток. Есть страница, на которой контент частично меняется ajax-способом. Вопрос: как можно поймать встроенными средствами изменение дива? Спасибо

WennY
()

Расшарить папку для скачки

Доброго времени суток. В наличии: IDEA, Tomcat, папка с контентом. Вопрос: можно ли как-то осуществить сабж без садомазо разврата с сервлетом? В идеале - просто расшарить диру для прямого браузерного доступа (как в старом добром апаче). Спасибо.

 ,

WennY
()

Bean Validation: validateValue

Доброго времени суток. Есть такой валидатор:

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import java.util.Set;

public class ValueValidator
{
    public <T> ValueValidator( T object, String property, Object value )
    {
        try {
            ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
            javax.validation.Validator validator = factory.getValidator();
             /* marked */ Set<ConstraintViolation<T>> constraintViolations = validator.validateValue( object.getClass(), property, value ); /* marked */
            for( ConstraintViolation<T> cv : constraintViolations ) {
                System.out.println( String.format(
                    "Внимание, ошибка! property: [%s], value: [%s], message: [%s]",
                    cv.getPropertyPath(), cv.getInvalidValue(), cv.getMessage() ) );
            }
        } catch( Exception e ) {
            e.printStackTrace();
        }
    }
}

Пример вызова:

new ValueValidator( new ValueDemoClass(), "firstname", "John" );

Помеченная строка никак у меня никак не уживается. IDEA возникает по поводу несоответствия типов. Если начинаю насильно приводить типы, возникают ошибки выполнения. Что делать в данной ситуации? Спасибо

 

WennY
()

Валидация значений, возвращаемых методом

Доброго времени суток. Имеется такой сорс:

Validator:

public class Validator
{
    public <T> Validator( T object )
    {
        try {
            ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
            javax.validation.Validator validator = factory.getValidator();
            Set<ConstraintViolation< T > > constraintViolations = validator.validate( object );
            for (ConstraintViolation< T > cv : constraintViolations) {
                System.out.println(String.format(
                    "Внимание, ошибка! property: [%s], value: [%s], message: [%s]",
                    cv.getPropertyPath(), cv.getInvalidValue(), cv.getMessage()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

MethodLevel:

public class MethodLevel
{
    @AssertTrue
    public boolean returnBool()
    {
        return false;
    }
}

Main:

new Validator( new MethodLevel() );

Собственно, пытаюсь запилить сабж. Если переменные можно чекнуть по значениям, то методы, видимо, придется вызывать или как-то эмулировать; наверно, из-за этого и процесс и встал, несмотря на все мои потуги. Спасибо.

 

WennY
()

RSS подписка на новые темы