Рубрики
Без рубрики

Используя Docker-Compose, чтобы построить простой API колбу

Сегодня я пробудил с отличной идеей: Узнайте, как построить Docker-Compose с нуля. На самом деле, включено … Помечено с Docker, Python, Linux, Devops.

Сегодня я проснулся с отличной идеей: Узнайте, как построить Docker-Compose с нуля Отказ

На самом деле, на моем машине Linux у меня нет никакой среды развития, подготовленной для бега чего-либо, потому что я думаю о большой цели, которая запускает все на Docker. Yeap, я даже не хочу установить любой менеджер по пакетам. У меня нет опыта работы с Python, но я хочу использовать его, чтобы построить свою первую среду.

Если вы понятия не имеете, какой докер, я рекомендую Смотреть это видео И это один Это даст обзор того, как работает Docker.

Для установки докера Следуйте инструкциям и Этот устанавливать Docker-Compose Отказ

Что составляют докер?

Короче говоря, Docker-Compose работает как менеджер контейнеров докеров. Давайте положем, что вы создаете веб-приложение, в котором вы собираетесь разделить его в 3 разных контейнерах (интерфейс, API, базу данных). Таким образом, вы можете создать DockerFile для каждой среды индивидуально.

Что наша проблема?

Мы собираемся создать API Python, используя колбу. Я не привык развиваться в Python, я изучал некоторые функции, и вы можете проверить это На моем Github Отказ

Руки вверх

В этом разделе я собираюсь объяснить структуру, а наши файлы связанные с приложениями Python.

Давайте создадим нашу структуру каталогов:

 - api-nasa/
    - requirements.txt
    - app.py
    - Dockerfile
 - docker-compose.yml

Файл API-NASA/требования. atxt Представляет список внешних библиотек, которые будут использоваться, в нашем случае нам нужна только библиотека колбы:

flask

Я не хочу выкопать подробно о наших API-NASA/App.py Реализация на данный момент, я просто создаю базовую конечную точку, и вы можете увидеть некоторые детали в комментариях кода:

import os
from flask import Flask, jsonify
app = Flask(__name__)

#we define the route /
@app.route('/')
def welcome():
    # return a json
    return jsonify({'status': 'api working'})

if __name__ == '__main__':
    #define the localhost ip and the port that is going to be used
    # in some future article, we are going to use an env variable instead a hardcoded port 
    app.run(host='0.0.0.0', port=os.getenv('PORT'))

Docker Hub.

Это репозиторий изображения, где вы можете зарегистрировать свой собственный образ. Допустим, вы хотите скачать изображение из узла JS, вам нужно только запустить следующую команду: Докер тянуть узел Отказ После этого, чтобы проверить, есть ли изображение, просто запустите Docker Images Отказ

Dockerfile

Давайте посмотрим на DockerFile как рецепт, где от этого он будет построить изображение ОС.

FROM python:3.6
RUN mkdir /usr/src/app/
COPY . /usr/src/app/
WORKDIR /usr/src/app/
EXPOSE 5000
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

Давайте проверим каждую строку:

FROM python:3.6

Мы устанавливаем изображение, которое мы хотим использовать, в нашем случае позволяет Используйте Python в версии 3.6. Если изображение не загружено на вашем компьютере (откройте терминал и введите Docker Images ), он собирается искать и загрузить на Docker Hub. . Эта часть действительно интересна, поскольку этот докерFile, не генерирует контейнер, а изображение, и вы можете загрузить в Docker Hub для использования в будущем.

RUN mkdir /usr/src/app/

Беги Используется для запуска операций внутри контейнера, для образца, если вы хотите установить любую дополнительную программу, вы просто используете команду Запустите APT-Get Установите все, что-либо Отказ В этом случае мы создаем папку, в которой наша приложение будет работать в контейнере.

COPY . /usr/src/app/

Это собирается скопировать все от ./ Локальный каталог и перейти к /usr/src/app/ Host Directory.

WORKDIR /usr/src/app/

Это устанавливает путь, где CMD и Беги Команды будут работать.

EXPOSE 5000

Выставляет порт 5000 контейнера для внешнего доступа.

RUN pip install -r requirements.txt

Выполняется, когда изображение будет сгенерировано. Это работает, когда вы хотите установить что-то на изображении.

CMD ["python", "app.py"]

Он устанавливает команду, которая будет работать, когда контейнер запускается. Мы определили запуск нашего приложения. Может быть, вы можете спросить: почему бы не поставить эту команду в предыдущем БЕЖАТЬ ? Это потому, что эта команда работает только при запуске контейнера, скажем, что это входная точка контейнера.

докер-состав

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

version: '3.8'
services: 
    api-service:
        build: ./api-nasa/
        volumes: 
            - ./api-nasa/:/usr/src/app/
        ports: 
            - 5000:5000
        environment: 
            PORT: 5000
            FLASK_DEBUG: 1

Давайте проверим каждую строку:

version: '3'

Здесь вы определяете версию Docker-Compose, которую вы используете. На самом деле ток – это 3.

    api-service:

Это наша служба API.

        build: ./api-nasa/

В этом разделе мы говорим, что Docker составляют путь, в котором наш докерф.

        volumes: 
            - ./api-nasa/:/usr/src/app/

Тома – это способ, которым мы синхронизируем файлы на нашем локальном компьютере к нашим контейнерам. Мы можем определить объемы в DockerFiles, но только если вы обрабатываете контейнер прямо, но, как обработчик нашего контейнера Docker-Compose, мы определяем их здесь.

        ports: 
            - 5000:5000

Мы говорили о портах в DockerFile, но здесь мы можем установить порт на нашем localhost, где вы можете получить доступ к контейнеру. Действительно круто, не? По сути, мы говорим: «Послушайте порт 5000 в нашем контейнере и поставьте порт 5000 в свой Localhost».

        environment: 
            PORT: 5000
            FLASK_DEBUG: 1

Это действительно вспомогательно, вы можете определить переменные среды и получить их на языке, который вы собираетесь использовать. Вы можете оформить заказ в файл Python API-NASA/App.py Код фрагмент OS.GETENV («Порт») .

После того, как все готово, давайте запустим наш файл составляющего докера.

    docker-compose up

Это должно быть результатом:

Чтобы проверить, работает ли это, Acess URL http://localhost: 5000 в вашем браузере.

Вы можете оформить заказ проекта на мой github . Увидимся, ребята.

Оригинал: “https://dev.to/alissonzampietro/the-amazing-journey-of-docker-compose-17lj”