Docker Compose изучаем правила написания docker-compose.yml и практические кейсы
Docker Compose изучаем правила написания docker-compose.yml и практические кейсы

Продолжайте творить и ускорять рост! Это мое участие в «Новом плане Nuggets Daily». · 10 Ежемесячный конкурс статей」принадлежащий27небо,Нажмите, чтобы просмотреть подробности мероприятия

Напишите правила

Официальная документация:docs.docker.com/compose/com…

В основном разделен на три слоя

Язык кода:javascript
копировать
# первый этаж Версия, соответствующая версии докера, обратно совместима. Последняя версия 3.9.
version: '3.9'
# второй этаж Служить
services: 
  # Служитьодин  web:
    # Служить Конфигурация
    images:
    bulid:
    ports:
    network:
    ...
  redis:
    ...
  mysql:
    ...

# третий этаж Другая конфигурация, такая как: сеть, объем данных, глобальная конфигурация.
networks:
  frontend:
  backend:
volumes:
  db-data:
configs:

Официальный пример

На основе трех вышеуказанных слоев обратитесь к официальному примеру.

Язык кода:javascript
копировать
version: "3.9"
services:

  redis:
    image: redis:alpine
    ports:
      - "6379"
    networks:
      - frontend
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        max_replicas_per_node: 1
        constraints:
          - "node.role==manager"

  vote:
    image: dockersamples/examplevotingapp_vote:before
    ports:
      - "5000:80"
    networks:
      - frontend
    depends_on:
      - redis
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  result:
    image: dockersamples/examplevotingapp_result:before
    ports:
      - "5001:80"
    networks:
      - backend
    depends_on:
      - db
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  worker:
    image: dockersamples/examplevotingapp_worker
    networks:
      - frontend
      - backend
    deploy:
      mode: replicated
      replicas: 1
      labels: [APP=VOTING]
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
      placement:
        constraints:
          - "node.role==manager"

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints:
          - "node.role==manager"

networks:
  frontend:
  backend:

volumes:
  db-data:

Практические случаи

Создайте блог WordPress.

Официальная документация:docs.docker.com/samples/wor…

Создать папку

Используется для хранения файлов проекта.

Язык кода:javascript
копировать
mkdir -p /test/wordpress
cd /test/wordpress

docker-compose.yml

Создайте docker-compose.yml.документ

Язык кода:javascript
копировать
vim docker-compose.yml

Введите следующее

Язык кода:javascript
копировать
version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data: {}
  wordpress_data: {}

Запустите Docker Compose

Язык кода:javascript
копировать
# Начать на переднем плане
docker-compose up
# За кулисамизапускать
docker-compose up -d

Начните на переднем плане и остановите, нажав Ctrl+c.

Фоновый запуск успешен

доступ

IP браузера: 8000, например у меня 192.168.227.3:8000

Docker Compose настраивает проект микросервиса Springboot

Создайте новый проект Springboot.

класс контроллера

При каждом доступе обновляйте данные в Redis и отображайте их во внешнем интерфейсе.

Язык кода:javascript
копировать
/**
 * @author ber
 * @version 1.0
 * @date 21/8/30 15:12
 */
@RestController
public class HelloController {
    @Autowired
    StringRedisTemplate redisTemplate;

    @GetMapping("/")
    public String hello() {
        final Long count = redisTemplate.opsForValue().increment("count");
        return "Hello ber, thanks. views: " + count;
    }
}

application.yml

redisизipпрямой Конфигурациястановитьсяredis

Язык кода:javascript
копировать
server:
  port: 8001
spring:
  redis:
  host: redis

Создать Docker-файл

Язык кода:javascript
копировать
FROM java:8

COPY *.jar /app.jar

CMD ["--server-port=8001"]

EXPOSE 8001

ENTRYPOINT ["java", "-jar", "/app.jar"]

Создайте docker-compose.yml.

Язык кода:javascript
копировать
version: "3.9"
services:
  berapp:
    image: berapp
    build: .
    depends_on:
      - redis
    ports:
      - "8001:8001"
    stdin_open: true
    tty: true
  redis:
    image: "redis:alpine"

Загрузите jar-пакет проекта, Dockerfile и docker-compose.yml на сервер.

Язык кода:javascript
копировать
mkdir /test/berapp
cd /test/berapp

Упакуйте jar проекта、Dockerfile、docker-compose.ymlзагрузить в/test/berapp

Запустите Docker Compose

Язык кода:javascript
копировать
# Бег на переднем плане
docker-compose up
# За кулисамибегать
docker-compose up -d
# Попробуйте запустить его еще раз --build: создать образ Служить перед запуском контейнера.
docker-compose up --build

Если слова «выход» или «ошибка» не появляются, это означает, что операция прошла успешно.

доступ Попробуйте эффект。Я здесьпрямойпроходитьcurlинструкциядоступ Понятно,Также можно использовать браузер через доступ к порту ip:8001.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода