2015-07-08 4 views
1

Я хотел бы иметь следующую конфигурацию:Как настроить Docker архитектуры

   Docker Containers 

||||||||||||  ||||||||||||  |||||||||||| 
|   |  |   |  |   | 
|   |  |   |  |   | 
|   | <--> |   | <--> |   | 
|   |  |   |  |   | 
|   |  |   |  |   | 
||||||||||||  ||||||||||||  |||||||||||| 
    nginx   web server   postgres 

С следующей установкой:

  1. Nginx

    • изменение nginx.conf
    • надстройкой соответствующая запись sites-available
    • ссылка конфигурации sites-enabled
  2. PostgreSQL

    • Логин пользователя установки и пароль
  3. Веб-сервер

    • клон из репозитория
    • процесс запуска сервера
    • сборки выпуска версии

У меня есть несколько вопросов, а также:

а) как передать секреты в Докер как ключи API, пароли и так на?

b) можно ли клонировать репо из докера или есть другой способ сделать это?

c) как и где развертывать такие приложения?

d) есть это setup даже возможно?

ответ

4

Эта установка очень распространена с докером. Я бы рекомендовал вам изучить использование docker-compose (example), потому что он упрощает настройку.

Передача секретов осуществляется через переменные среды во время выполнения докеров. Если у вас их много, вы можете сохранить их в env-файле.

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

+0

Это он точно учебником я использую. – squixy

1

a) обычно проходят секреты через переменные среды, это легко использовать в контейнерах.

b) да, вы можете, если хотите клонировать публичное репо, вы можете сделать это в файле Dockerfile с помощью RUN git clone repo; вы также можете вытащить репо на Entrypoint, если хотите, чтобы ваше репо было обновлено.

c) emm ... Я не знаю, как ответить на этот вопрос, может быть docker docs?

d) эта установка возможна, но вот несколько советов:

  • вы можете попробовать использовать nginx-proxy, который легче сделать резервную прокси для вашего контейнера веб-сервера.
  • с использованием Volume для обслуживания вашего веб-содержимого, поэтому вы можете связывать том с контейнером nginx и обслуживать статическое содержимое с помощью nginx.
  • Постройте данные только контейнер для вашей базы данных, вы можете проверить this post
0

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

Контейнеры, взаимодействующие через ссылки и докеры, предоставляют имена хостов для обработки изменяющихся IP-адресов.

Это пример настройки веб-приложения Jira с помощью базы данных postgres. Это должно быть аналогично вашему примеру. Можно легко добавить сервер nginx.

jira: 
    image: blacklabelops/jira 
    ports: 
    - '8100:8080' 
    volumes: 
    - /opt/atlassian-home 
    environment: 
    - 'DATABASE_URL=postgresql://[email protected]/jiradb' 
    - 'DB_PASSWORD=jellyfish' 
    links: 
    - postgresql 
postgresql: 
    image: sameersbn/postgresql:9.4-1 
    ports: 
    - '5432:5432' 
    environment: 
    - 'PSQL_TRUST_LOCALNET=true' 
    - 'DB_USER=jiradb' 
    - 'DB_PASS=jellyfish' 
    - 'DB_NAME=jiradb' 

Сервер Jira будет доступен с локальным хостом: 8100 и база данных будут доступны с локальным хостом: 5432

+0

Нужно ли мне использовать 'ports:'? Я видел несколько примеров, где это не обязательно (даже для изображения Postgres). Я не хочу хранить 'ENV' в моем 'Dockerfile'. Как настроить postgres или nginx вместо использования defaut? – squixy

+1

Вам не требуется объявление порта, когда разговор требуется только по ссылкам, а установленная служба уже знает, какие порты связывать или запускаются по умолчанию. Работа без ENV неизвестна мне, потому что они позволяют гибко использовать изображение и сохранять мои полномочия вне поля зрения. – blacklabelops

Смежные вопросы