Рубрики
Uncategorized

Docker Compose

Контекст нам обычно нужно запустить несколько контейнеров докеров, когда мы развертываем веб-приложение / сайт … Теги с Docker, DEVOPS, базой данных.

Контекст

Обычно нам необходимо запустить несколько контейнеров докеров, когда мы развертываем проект веб-приложения/веб-сайта. Эти контейнеры также могут иметь взаимодействия между собой, что делает ее действительно утомительной работой для меня. Я использовал для настройки и привлечения этих контейнеров вручную, используя серию файлов Bash. Для этого мне нужно вспомнить порядок контейнеров в сердце, помните свои местоположения файлов запуска и введите несколько командных строк вручную в терминале. К счастью, есть супер инструмент Docker Compose Кто спасает мою задницу.

Введение

Это инструмент, который определяет список контейнеров для запуска с их конфигами и операциями. В некотором смысле это немного похоже на Dockefile Работает для определения контейнера.

Насколько я понимаю, Dockerfile Определяет список инструкций для поднятия контейнера, в то время как составить Определяет список для поднятия Контейнеры группы Отказ

Составить является инструментом для определения и управления многофункциональными приложениями докера. С Составить Используете файл YAML для настройки служб вашего приложения. Затем с одной командой вы создаете и начнем все услуги из вашей конфигурации. Составные работы во всех средах: производство, постановка, разработка, тестирование, а также рабочие процессы CI.

Как правило, нам нужны три шага для развертывания составляющими:

  1. Определить Dockerfile или несколько докерфайлов для одного или нескольких услуг проекта.

  2. Определите все услуги проекта в Docker-Compose.yml Таким образом, они будут бегать вместе в изолированной среде.

  3. Беги Docker-Compose up и Составить Запускается и запускает все приложение.

Установка

Установка Docker Compose довольно проста. Можно увидеть (эта страница) [ https://docs.docker.com/compose/install/ ] Официальные инструкции для всех платформ. Для Linux я использую следующие линии CMD для установки его:

$ sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

Попробуйте пример

Я попробовал простой пример, представленный в официальном документе.

В моем flask_app Папка, я в первую очередь добавил один Docker-Compose.yml Файл, который определил следующий контент:

version: "3.8"
services:
  web:
    build: .
    ports:
      - "8666:5000"
  redis:
    image: "redis:alpine"

Ясно, как показывает, есть два сервиса, которые должны быть запущены : Веб и редис . И Веб Сервис требует картографирования порта, как 8666: 5000 И это файл сборки находится в текущей папке.

Теперь я определил простое приложение для колб, которое является файлом Python app.py и заполните следующий код:

import time
import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

Чтобы запустить это приложение, мне нужен сервис Python-Env, который может выполнить сценарий Python и установить модули зависимости. колбу и Redis Отказ Таким образом, мы определяем DockerFile и требование. Atxt в flask_app папка.

Файл Dockerfile содержание:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

Файл требование .txt содержит:

flask
redis

До сих пор у меня есть все файлы для запуска этого веб-приложения. Подводя итоги, Веб Сервис — это приложение Python, которое будет построен из Dockerfile и связывает 5000 портов контейнера для размещения 8666 порта размером 8666; Redis Стандартный контейнер Redis начинается с вытянутого официального изображения с настройкой порта по умолчанию.

Теперь запустите его (я уже установил Docker-Compose заранее для моего облачного сервера Huawei):

sudo docker-compose up

После какой-то напечатанной информации о загрузке и подготовке я вижу следующую информацию о запуске услуг:

И Docker PS Дает еще два контейнера:

Можно отметить, что имя контейнера отформатировано как {имя папки} _ {ServiceName} _1 Отказ

Теперь проверьте его. В моем браузере я печатаю my_serverip: 8666 И это показывает страницу, показанную ниже. Каждый раз, когда я его обновляю, счетчик увеличивается на один.

Ссылка: https://docs.docker.com/compose/

Оригинал: «https://dev.to/jemaloqiu/docker-compose-3opj»