George
давай начнем с самого начала - образ какой
George
плагины есть ?
George
если сам собирал - докерфайл покажи
✙ Dmytro
FROM centos:6 ENV LANG en_US.UTF-8 ENV LC_ALL en_US.UTF-8 ENV LANGUAGE en_US.UTF-8 RUN yum -y --nogpgcheck install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm && \ yum -y --nogpgcheck --enablerepo=remi,remi-php56 install php \ php-fpm php-devel php-common php-cli php-mysql php-mbstring \ php-xml php-xmlrpc php-gd php-mcrypt php-pear php-opcache \ php-bcmath php-soap php-pdo php-intl php-phalcon php-imap \ php-pecl-crypto php-pecl-gearman php-pecl-geoip php-pecl-igbinary \ php-pecl-memcache php-pecl-memcached php-pecl-mongodb php-pecl-mongo \ php-pecl-msgpack php-pecl-zip php-pecl-ssh2 php-pecl-xdebug mod_ssl git RUN curl -sL https://rpm.nodesource.com/setup_6.x | bash - \ && yum -y --nogpgcheck install nodejs kernel kernel-devel pcre-devel \ zlib-devel openssl-devel python-devel gcc-c++ xz m4 RUN npm cache clean && npm install -g n gulpjs/gulp-cli ADD id_rsa /root/.ssh/id_rsa RUN chmod 600 /root/.ssh/id_rsa RUN echo "StrictHostKeyChecking no " > /root/.ssh/config RUN rm -rf id_rsa /root/.ssh/id_rsa WORKDIR /app CMD ["php-fpm"]
George
centos 6, самопальный пых
George
ну чо
George
а чего не готовый взял ? https://hub.docker.com/r/centos/php-56-centos7/ ?
✙ Dmytro
не факт что все нужные пакеты есть на центос 7, но попробую. спасибо
George
я не знаю насколько годны кастомные вроде https://github.com/eaudeweb/docker.php-fpm но я бы предположил, что у тебя криво сбилдилось, иилии подсеривает какой-то из аддонов
✙ Dmytro
вообще моя приложуха сделана для 4й пыхи
George
ваще жесть, остается только посочувствовать
Михаил
Здравствуйте
Михаил
Делаю pipeline для bitbucket, пробую тестировать локально через докер. Есть вопрос. Возможно ли при cat Dockerfile | docker build - указать volume?
Михаил
Нужен доступ к исходникам для запуска тестов, pylint и тп
✙ Dmytro
а чего не готовый взял ? https://hub.docker.com/r/centos/php-56-centos7/ ?
Failed loading opcache.so: opcache.so: cannot open shared object file: No such file or directory Failed loading xdebug.so: xdebug.so: cannot open shared object file: No such file or directory
✙ Dmytro
если не хватает - доустановить ?
в Dockerfile уже есть php-opcache и php-pecl-xdebug. или это не то?
George
хз
alexey
Всем привет ребят, есть ли тут авто тестеры которые юзают докер, хочу начать вводит эту фишку у нас вфирме и хотел бы получить пример как это делается или мануал какой нибудь. Юзаю селениум +мавен+жава
Alexander
всем привет создаю пользователя через скрипт в entrypoint можно как-то сделать так, чтобы при логине в контейнер использовался созданный пользователь? просто указать USER newuser в Dockerfile не работает мне пользователя необходимо создать с UID/GID хостовой машины
Alexander
если указывать пользователя в docker-compose - тоже ругается на то, что пользователя нет в passwd
Alexander
docker exec -u ?
хочется без exec -u
Alexander
-v /etc/passwd:/etc/passwd
интересный вариант
George
хочется без exec -u
тогда встраиваешь в скрипт gosu
George
примерно так https://github.com/docker-library/postgres/blob/master/12/docker-entrypoint.sh#L281
Alexander
о! спасибо
Alexander
хм… все-равно через компоуз логин идёт под рутом
Ilya
коллеги, добрый день. подскажите, пожалуйста, как в Dockerfile передавать в команду CMD переменные? задава вот какая: запустить команду с токеном, который передается из Variable в .gitlab-ci команда java -jar ServerCounter-1.0.jar TOKEN1 TOKEN2 сам Dockerfile FROM java:8 COPY target/ServerCounter-1.0.jar . ARG API_SECRET ARG PTERO_TOKEN RUN echo $PTERO_TOKEN CMD java -jar ServerCounter-1.0.jar $(echo $API_SECRET) $(echo $PTERO_TOKEN) при этом ни api, ни secret не появляется в конечной команде
Andrew
Через ARGs
Ilya
Через ARGs
я так и пытаюсь сделать, как вы видите в докерфайле. но всё равно кажется, что в cmd эти args не подставляются. или может я делаю что-то не так?
Andrew
скорее всего не подставляются, так как ARG существуют только во время build
Andrew
Вариант: команду закидывать не в Dockerfile, а в compose.
Ilya
а через ENV - это не то, верно?
Ilya
понял, кажется
Andrew
У меня примерно так: envsubst < compose_with_variables.yml > docker-compose.yml(with values)
Andrew
А потом последний файл доставляется на прод и там запускает контейнер
Ilya
понял
George
О, Господи, енвсубст
George
Какой ужас ) лучше бы джинджу уже советовали
George
j2 docker-compose.j2 | docker-compose -p mysuperproject -f - up
George
Или -f /dev/stdin (да, так тоже можно)
Andrew
Ок, учту. :) В защиту могу сказать: так было до меня и трогать не было времени, так как работало. Спасибо за идеи... :)
Aleksey
Ihar
Всем привет. Необходимо смаппить порт контейнера для хост машины (docker run -d -p 8080:8080 my_image). Но данный вариант мне не подходит. Можно ли описать свой Dockerfile, чтобы порт внутри контейнера маппился на порт хост машины?
да, это я
и докерфайл тут ни при чём
Deleted
я же правильно понимаю вопрос - вы хотите избавиться от необходимости прописывания ключей для docker run?
Deleted
загугли какой-нибудь изи туториал для compose-файлов и всё
Ihar
Вообще, суть проблемы вот в чем. У меня есть "gitlab", необходимо настроить пайплайны. Мне необходимо запустить jar файл с приложением, и автотесты (которые запускают браузеры в отдельных контейнерах). Но чтобы они увидели приложение, надо открыть порт и смаппить на хост машину. Я так понимаю
Deleted
тогда ищите интеграцию gitlabа с docker напрямую
Deleted
для дженкинса такая есть и мэппинг портов тоже можно прописать
Ihar
Ага, на дженкинсе намного проще, я сам новичок в gitlab-ci, вот и ищу ответы на свои вопросы. Спасибо!
Mark
Подскажите пожалуйста по линуксу с докером, у меня вот такой вот таск есть в CI/CD пайплайне: - task: SSH@0 inputs: sshEndpoint: 'VM' runOptions: 'inline' inline: | cd /home/AzureUser/CACO docker-compose pull docker-compose stop docker-compose rm -f docker-compose up -d 2> docker-compose.log cat docker-compose.log Он подключается к ВМ по SSH, и выполняет эти докер команды. Эти команды выполняются успешно и все работает с точки зрения функционала. Но в логах пишутся ошибки (хотя все ок) и поэтому джоба подчеркивается красным Вот такие ошибки пишутся: ##[error]Pulling backend ... ##[error] Pulling backend ... pulling from calienteamcacocrypto... ##[error] Pulling backend ... extracting (37.6%25) ##[error] Pulling backend ... extracting (62.6%25) ##[error] Pulling backend ... extracting (81.4%25) ##[error] Pulling backend ... extracting (100.0%25) ##[error] Pulling backend ... pull complete ##[error] Pulling backend ... digest: sha256:14b94887315e30ada8... ##[error] Pulling backend ... status: downloaded newer image fo... ##[error] Pulling backend ... done ##[error]Stopping caco_backend_1 ... ##[error] Stopping caco_backend_1 ... done ##[error]Removing caco_backend_1 ... Going to remove caco_backend_1 ##[error] Removing caco_backend_1 ... done Creating caco_backend_1 ... Creating caco_backend_1 ... done ##[error]Command failed with errors on remote machine. если я подключаюсь через консоль к вм и выполняю эти команды сам то у меня ошибки не пишутся. а тут над каждым логом пишется ##[error], поэтому считает что джоба закончилась с ошибками
Dmitry
ку, подскажите, пожалуйста, с чего начать изучение кубернейтес?
Mark
Подскажите пожалуйста по линуксу с докером, у меня вот такой вот таск есть в CI/CD пайплайне: - task: SSH@0 inputs: sshEndpoint: 'VM' runOptions: 'inline' inline: | cd /home/AzureUser/CACO docker-compose pull docker-compose stop docker-compose rm -f docker-compose up -d 2> docker-compose.log cat docker-compose.log Он подключается к ВМ по SSH, и выполняет эти докер команды. Эти команды выполняются успешно и все работает с точки зрения функционала. Но в логах пишутся ошибки (хотя все ок) и поэтому джоба подчеркивается красным Вот такие ошибки пишутся: ##[error]Pulling backend ... ##[error] Pulling backend ... pulling from calienteamcacocrypto... ##[error] Pulling backend ... extracting (37.6%25) ##[error] Pulling backend ... extracting (62.6%25) ##[error] Pulling backend ... extracting (81.4%25) ##[error] Pulling backend ... extracting (100.0%25) ##[error] Pulling backend ... pull complete ##[error] Pulling backend ... digest: sha256:14b94887315e30ada8... ##[error] Pulling backend ... status: downloaded newer image fo... ##[error] Pulling backend ... done ##[error]Stopping caco_backend_1 ... ##[error] Stopping caco_backend_1 ... done ##[error]Removing caco_backend_1 ... Going to remove caco_backend_1 ##[error] Removing caco_backend_1 ... done Creating caco_backend_1 ... Creating caco_backend_1 ... done ##[error]Command failed with errors on remote machine. если я подключаюсь через консоль к вм и выполняю эти команды сам то у меня ошибки не пишутся. а тут над каждым логом пишется ##[error], поэтому считает что джоба закончилась с ошибками
Собственно вопрос - как сделать так чтобы этот таск не считал что это ошибки, и у меня джоба светилась зеленым
Andrew
Подскажите пожалуйста по линуксу с докером, у меня вот такой вот таск есть в CI/CD пайплайне: - task: SSH@0 inputs: sshEndpoint: 'VM' runOptions: 'inline' inline: | cd /home/AzureUser/CACO docker-compose pull docker-compose stop docker-compose rm -f docker-compose up -d 2> docker-compose.log cat docker-compose.log Он подключается к ВМ по SSH, и выполняет эти докер команды. Эти команды выполняются успешно и все работает с точки зрения функционала. Но в логах пишутся ошибки (хотя все ок) и поэтому джоба подчеркивается красным Вот такие ошибки пишутся: ##[error]Pulling backend ... ##[error] Pulling backend ... pulling from calienteamcacocrypto... ##[error] Pulling backend ... extracting (37.6%25) ##[error] Pulling backend ... extracting (62.6%25) ##[error] Pulling backend ... extracting (81.4%25) ##[error] Pulling backend ... extracting (100.0%25) ##[error] Pulling backend ... pull complete ##[error] Pulling backend ... digest: sha256:14b94887315e30ada8... ##[error] Pulling backend ... status: downloaded newer image fo... ##[error] Pulling backend ... done ##[error]Stopping caco_backend_1 ... ##[error] Stopping caco_backend_1 ... done ##[error]Removing caco_backend_1 ... Going to remove caco_backend_1 ##[error] Removing caco_backend_1 ... done Creating caco_backend_1 ... Creating caco_backend_1 ... done ##[error]Command failed with errors on remote machine. если я подключаюсь через консоль к вм и выполняю эти команды сам то у меня ошибки не пишутся. а тут над каждым логом пишется ##[error], поэтому считает что джоба закончилась с ошибками
У вас докер по умолчанию пишет в stderr
Andrew
поэтому таска и помечается зафейленой
Andrew
сделайте: docker-compose pull 2> docker-compose.log docker-compose stop docker-compose rm -f docker-compose up -d 2>> docker-compose.log
Andrew
точнее надо 2>> docker-compose.log к каждой команде добавить
Andrew
кроме 1.
Mark
а че он пишет в stderr ? я может что-то неправильно делаю ?
Mark
просто мб это костыль и у меня действительно какие-то ошибки есть
Anton
подскажите как перенести mount данные с одного сервера на другой? Заархивировал в тар с сохранением владельцев, но т.к. юиды разные в системах...
Andrew
У вас изначально при запуске stderr в логфайл перенаправляется - сделайте так же для остальных команд, только не с перезаписью файла, а с "дозаписью"
Ihar
Извиняюсь, наверно немного не по теме вопрос. Может у кого то есть опыт в конфигурации пайплайнов в "gitlab-ci". Задача: в "gitlab" настроить пайплайн для запуска приложения (jar файл) в докер контейнере + выполнить автотесты (командой gradle clean test). Автотесты на "Selenide" с использованием "Selenoid". Нужно настроить общение между контейнерами браузеров(которые создаются при помощи "selenoid"), с контейнером развернутого приложения. Отпишитесь пожалуйста в лс, чтобы здесь не засорять чат.
Andrew
юзай docker-compose для запуска контейнеров
@
парни такой вопрос, есть образ postgres, при старте контейнера идет инициализация базы, создаются учетки через переменные, но если подкинуть конфиг через волюм получаю ошибку: initdb: error: directory "/var/lib/postgresql/12/main" exists but is not empty If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/12/main" or run initdb with an argument other than "/var/lib/postgresql/12/main". что можно на этот счет придумать, что бы и слон стартовал, и конфиги свои подбрасывать?