В данном примере показан, как запустить 2 JAR файла в одном контейнере. В качестве базового образа будем использовать «phusion/baseimage» Для начала необходимо создать скрипты запуска, в для удобства в примере они будут называться «start-first.sh» и «start-second.sh«, в них описываем запуск JAR файлов, к примеру start-first.sh start-second.sh И создаем Dockerfile
Для того, чтобы изменить владельца скопированных файлов в контейнере, необходимо к команде «COPY» добавить ключ «—chown» Например:
Пример сборки докер образа MySQL 8 с базой данных, с дамп файла. Содержимое: Dockerfile mysqld.cnf dump.sql Dockerfile: Обратите внимание, что теперь переменные «MYSQL_USER» и «MYSQL_PASSWORD» задаются в Dockerfile В файле «my.cnf» необходимо заменить только дефолтный путь хранения файлов MySQL mysqld.cnf Путь в этой строке: На другой путь: И собираем образ:
При попытке выполнить «docker login» на Ubuntu появляется следующая ошибка: Error saving credentials: error storing credentials - err: exit status 1, out: `Cannot autolaunch D-Bus without X11 $DISPLAY` Решение:
При попытке обновить список репозиториев в Docker образе основанного на «node:8» появляется следующая ошибка: Err http://http.debian.net jessie-backports/main amd64 Packages Решение Dockerfile:
При попытке выполнить команду внутри Docker контейнера с Jenkins‘а появляется следующая ошибка: Решение: Использовать вместо: следующее:
Пример деплоя в Docker Swarm с Jenkins‘а используя stack deploy. Jenkinsfile:
При попытке запустить «chrome» в Docker образе «Node» получил следующую ошибку: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory Решение Dockerfile:
За основу берем Ubuntu 18.04, устанавливаем Android SDK, так же устанавливаем ruby, nodejs и yarn. И пробрасываем пользователя Jenkins в контейнер, для выполнения привилегированных команд. Dockerfile:
Задача: Получить и SSL сертификат для Nginx‘a, который живет в контейнере, от Let’s Encrypt и автоматически его продлевать Nginx в контейнере настроен пока только на прослушивание 80-го порта. В контейнер примонтирована директория с хост машины, для верификации сертификатов, и этот путь описан в локейшене. В примере используется Docker-Compose, но он не является обязательным. app.conf docker-compose.yaml