Развертывание приложения Symfony с грузчиком

голоса
2

Я пришел сюда, потому что я разрабатываю приложение с Symfony3. И я имею некоторые вопросы о развертывании приложения. На самом деле я использую Докер-Compose:

version: '2'

services:
    nginx:
        build: ./docker/nginx/
        ports:
            - 8081:80
        volumes:
            - .:/home/docker:ro
            - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
            - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
        networks:
            - default

    php:
        build: ./docker/php/
        volumes:
            - .:/home/docker:rw
            - ./docker/php/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro
        working_dir: /home/docker
        networks:
            - default
        dns_search:
            - php

    db:
        image: mariadb:latest
        ports:
            - 3307:3306
        environment:
            - MYSQL_ROOT_PASSWORD=collectionManager
            - MYSQL_USER=collectionManager
            - MYSQL_PASSWORD=collectionManager
            - MYSQL_DATABASE=collectionManager
        volumes:
            - mariadb_data:/var/lib/mysql
        networks:
            - default
        dns_search:
            - db

    search:
        build: ./docker/search/
        ports:
            - 9200:9200
            - 9300:9300
        volumes:
            - elasticsearch_data:/usr/share/elasticsearch/data
        networks:
            - default
        dns_search:
            - search

volumes:
    mariadb_data:
        driver: local
    elasticsearch_data:
        driver: local

networks:
    default:

Nginx ясно, двигатель PHP-FPM с некоторыми расширениями и композитор, дб MariaDB и поиск ElasticSearch с некоторыми плагинами.

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

С Докер я могу использовать файл докер-создавать и воссоздавать изображения и контейнер на сервере, я могу сохранить свои контейнеры в изображениях и в архиве дегтя и загрузить его на сервер. Это хорошо для Nginx и PHP-FPM, но как насчет elasticsearch и БД? Потому что мне нужно хранить данные в течение будущего обновления кода. Затем, когда я раскрываю код мне нужно выполнить доктрину миграции и, возможно, некоторые команды, и Deployer сделать это прекрасно с некоторыми другими вещами interresting. И как я раскрываю код с Докерами? Можем ли мы использовать оба? Deployer для кода и Докер услуг?

Большое спасибо за вашу помощь.

Задан 04/11/2016 в 04:23
источник пользователем
На других языках...                            


1 ответов

голоса
2

Прежде всего, пожалуйста, попробуйте использовать определенный пользователь сеть, они имеют дополнительные функции против наследия, связывающих встраиваемого DNS. Значение вы можете вызвать другие контейнеры на одной и той же сети с их именами в своих приложениях. Контейнеры на определенном пользователь сетей являются изоляты из контейнеров на другой определяются пользователь сети.

Для создания определенного пользователя сети:

docker network create --driver bridge <networkname>

Dockerfile использовать определенный пользователем пример сети:

search:
    restart: unless-stopped
    build: ./docker/search/
    ports:
        - "9200:9200"
        - "9300:9300"
    networks:
        - <networkname>

Во-вторых, я заметил, что вы не использовали объемы данных для вас DB и ElasticSearch. Вы должны монтировать тома в определенных точках, чтобы сохранить ваши данные стойких.

В-третьих: При экспорте контейнеров оно не содержит смонтированные тома. Вам необходимо создать резервную копию данных тома и перенести его вручную.

Для резервного копирования данных тома:

docker run --rm --volumes-from db -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

Эта команда создаст контейнер, монтирует тома из БД контейнера и монтирует текущий каталог в контейнере , как /backup, использует ubuntu imageи tarкоманду для создания резервной копии /dbdataв контейнере (рассмотреть вопрос об изменении этого на ваш dbdirectory) в /backupтом , что устанавливается из ваших докеров хостов). после того , как операция завершается переходный контейнер будет удалена (убунт контейнер мы использовали для создания резервной копии с --rmпереключателем).

Восстановить:

Вы скопировать tarархив на удаленный компьютер и создать контейнер с пустым установленным тома. затем извлечь из архива дегтя в том объеме , используя следующую команду.

docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"
Ответил 04/11/2016 в 05:59
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more