Задать вопрос
Ответы пользователя по тегу Docker
  • Как деплоить Laravel + Vue приложение в Docker?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Всё работает, но после внесения дополнений в репо, приходится ребилдить webpack, возможно, обновлять composer'ом пакеты прямо на живом

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

    А вы что - данные в докер-контейнерах храните?
    Обычный кейс к примеру для сборки фронта - изменили что-то в репо - сработал хук, который запускает автодеплой.
    Автодеплой принимает изменения из репа и запускает контейнер с нодой или чего у вас там, который монтирует в себя директорию с исходниками и делает билд проекта. После успешного билда контейнер с нодой завершает работу, и скрипт автодеплоя дергает далее контейнер с нгинксом для применения изменений.
    Вот собственно все.
    Образы используются сбилденные один раз. Как правило во время автодеплоя ничего дополнительно в них не вносится.
    Ответ написан
    4 комментария
  • Контейнеризация для локальной разработки?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Правильно понимаю, что docker можно также спокойно использовать локально на windows ?

    Да. Но есть свои ньюансы. В среде Unix-систем работать с докером гораздо проще.

    Как вы локально разворачиваете докер ?

    через docker-compose:
    docker-compose up -d

    При разворачивании проекта через docker, создается некая виртуализация. Как тогда работать с проектом через IDE ?

    Да все так же - ваша папка с проектом мапится в контейнер, а вы спокойно открываете у себя в IDE.
    Единственно - с отлаживанием проекта в IDE могут возникнуть проблемы.
    Ответ написан
    1 комментарий
  • Как подключиться к Mariadb в docker-контейнере извне?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Если вы делали все по мануалу, то эта часть команды
    делает доступными подключения только на локалхосте:
    ... -p 127.0.0.1:3306:3306 ...
    попробуйте поменять на
    ... -p 0.0.0.0:3306:3306 ...
    Ответ написан
    3 комментария
  • Не могу подключиться к Django проекту запущенному через докер, что делать?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Попробуйте так:
    version: '3'
    
    
    services:
      web:
        build: .
        command: python app/manage.py runserver 0.0.0.0:8000
        volumes:
          - .:/code
        ports:
          - '0.0.0.0:8000:8000'
    Ответ написан
    Комментировать
  • Docker-compose auto installation project?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Лучше если это будут делать скрипты внутри контейнеров.
    К примеру как стартует простой скрипт на Python
    #!/bin/bash
    
    VENV=./rvenv
    # если нет виртуального окружения - создаем его
    if [ ! -d $VENV ]; then
        virtualenv -p `which python3` $VENV
        $VENV/bin/pip install -U pip
    fi
    
    # устанавливаем/доустанавливаем нужные пакеты
    $VENV/bin/pip install -r requirements.txt
    
    # делаем миграции
    $VENV/bin/python src/manage.py migrate
    
    # ждем пока контейнер с фронтом соберет библиотеки с помощью webpack
    sleep 5
    
    while [ -f ./build_stat.flag ];
    do
        sleep 1;
        echo "Wait for webpack"
    done;
    
    # собираем статику
    $VENV/bin/python src/manage.py collectstatic --no-input
    
    
    $VENV/bin/uwsgi --yaml ./src/uwsgi.yml
    Ответ написан
  • Почему одни images могут запускаться в фоне, а другие нет?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Потому что для того чтобы докер-контейнер оставался работать в фоне - нужен запущенный процесс в контейнере, чтобы обслуживать его.
    ubuntu и debian после запуска завершаются, потому что нет запущенных процессов
    а Postgres и php-fpm запускают соотвествующие процессы у себя в контейнере
    В качестве хака - добавив к примеру строку к контейнеру в docker-compose:
    command: tail -f /dev/null
    вы удержите контейнер запущенным в фоне, потому что контейнер будет обслуживать процесс tail -f /dev/null
    Ответ написан
    Комментировать
  • Как пробросить порт из контейнера с MongoDB в контейнер с NodeJS в Docker?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Так неправильно:
    mongoose.connect('mongodb://127.0.0.1:27017/kondrackii


    попробуйте так:
    mongoose.connect('mongodb://mongo:27017/kondrackii

    если запускаете с docker-compose

    это можно убрать
    network_mode: host
    Ответ написан
    4 комментария
  • Почему не запускается контейнер сайта?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Как минимум зайдите внутрь контейнера и запустите что вы там написали.
    У вас в requirements.txt только bottle==0.12.17, а вы еще часть модулей используете - тот же psycopg2. Он у вас и валится с ошибкой после запуска.
    Ответ написан
    Комментировать
  • Как эффективно использовать Docker + Docker-compose при разработке?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    но к ним нельзя подключиться извне (из-за использования networks, а как открыть нетворк -
    догадаться нужно самому)

    А через директивы ports - разве не прокидываются нужные порты из контейнеров наружу?

    При внесении каких-то изменений в основное приложение
    можно лишь надеяться что они когда-то появятся в контейнере

    Если вы вносите изменения в проект который примаплен через volume - то контейнер их тут же видит.
    Умеет ли ваше приложение видеть что локальные файлы изменились, и применять их - это уже другой вопрос.
    Но даже если не умеет - нет никаких проблем перестартануть нужный контейнер после внесения каких-либо изменений.

    Можно пять раз удалить контейнер с приложением, потом десять раз удалить образ
    никакие изменения никуда не попадут.

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

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

    Ну тут определиться - используете докер для этого, или виртуальное окружение на своей машине.
    Если хотите одновременно использовать и то и другое - прокидывайте порты.
    Ответ написан
    3 комментария
  • Как изменить docker-compose.yml чтобы запустить sh скрипт в контейнере после его поднятия?Как выполнить команду cmd внутри контейнера автоматически?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    А в чем сложности-то?

    docker-compose.yml
    ...
         <какой-то контейнер>:
             image: <какой-то стандартный образ>
             ...
             entrypoint: <какая-то команда которую нужно запустить в автоматическом режиме>


    Если боитесь что не запустится скрипт входа стандартного образа - то гляньте что у вас там стартует, и измените команду так:
    ...
        <какой-то контейнер>:
             image: <какой-то стандартный образ>
             ...
             entrypoint: <ваша команда> && <старт стандартной точки входа образа>
    Ответ написан
    Комментировать
  • Python-Django-Docker, как подключаться к докеру по локалхосту?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    docker-compose.yml:
    web: 
        ...
        links:
          - postgres
        env_file:  .env


    .env
    ...
    DB_HOST=postgres
    DB_PORT=5432


    тогда
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
             ...
            'HOST': os.environ.get('DB_HOST'),
            'PORT': os.environ.get('DB_PORT'),
        }
    }
    Ответ написан
    4 комментария
  • Как Docker под управлением Windows переназначает порты?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    > docker run -p 3000:3000
    > И ничего.... По запросу localhost:30000

    Дык запускаете на 3000, а проверяете 30000?

    Укажите ноде, слушать на 0.0.0.0 помимо указания порта. А то нода у вас на 127.0.0.1 по умолчанию внутри контейнера слушает - вот порт и не пробрасывается наружу.
    Ответ написан
  • Как правильно делать бекапы Postgresql, который "обитает" в докер контейнере?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Бекап

    docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql


    Восстановление

    cat your_dump.sql | docker exec -i your-db-container psql -U postgres
    Ответ написан
    Комментировать
  • Как в кроне подключаться к запущенному контейнеру?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Ну так по имени контейнера и подключайтесь.
    Ответ написан
    3 комментария
  • Как подключиться к отработанному контейнеру?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Скоммитьте образ контейнера в image - и стартуйте с него

    Вывод всех, в том числе остановленных контейнеров:
    docker ps -a

    Смотрите там CONTAINER_ID и коммитите его в образ:
    docker commit <CONTAINER_ID> <image_name>

    Ну а образ стартуете как обычно чтобы он остался в онлайне:
    docker run -d -ti <image_name> tail -f /dev/null

    Ну а далее проваливаетесь внутрь запущенного контейнера например так:
    docker exec -ti <container_name> /bin/bash

    И далее делаете что захотите...
    Ответ написан
    1 комментарий
  • Почему перестал запускаться сервер из Docker?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    ну так в docker-compose.yml поменяйте строку entrypoint на такую:
    ```
    entrypoint: ["tail", "-f", "/dev/null"]
    ```
    стартаните docker-composer, зайдите в контейнер, и вручную стартаните сервер - там и смотрите ошибки
    Ответ написан
  • Исправить ошибку HTTP Error 403: SSL is required?

    fox_12
    @fox_12 Автор вопроса, куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Решилось изменением версии пакета filelike в requirements.txt
    ...
    filelike==0.5.0
    ...
    Ответ написан
    Комментировать
  • Чем Docker может мне помочь?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    К примеру в docker-compose.yml прописываете контейнеры и параметры с которыми нужно их стартовать, беря при этом готовые контейнеры - mysql, redis, nginx, nodejs, и пр., при необходимости указываете установку дополнительных зависимостей и настройку отдельных контейнеров в Dockerfile, стартуете их одной командой docker-compose up -d, и работаете в том же окружении что и на серверах на продакшене, ничего не доустанавливая себе в систему.
    Ответ написан
    4 комментария
  • Как создать и подключить mysql docker контейнер к контейнеру Django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    А в чем собственно сложности?
    Разворачиваем mysql docker-контейнер как написано в "How to use.."
    Единственно монтируем директорию с БД в контейнер, дабы изменения сохранялись -v /my/own/datadir:/var/lib/mysql

    В контейнере с django указываем линк на контейнер с mysql
    К примеру
    link:
     - "mysql"


    Все - обращаемся к хосту mysql по имени "mysql"
    Ответ написан
    Комментировать
  • Как правильно запустить сервис внутри docker контейнера?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Пропишите в настройках supervisor настройки вашего сервиса, и запускайте через:
    /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
    Ответ написан
    4 комментария