Rumah  >  Soal Jawab  >  teks badan

pas pemeriksaan kesihatan docker-compose, tetapi masih tidak sihat

condition 在版本 3.0 至 3.8 中已删除 compose 规范,但现在又回来了!使用 compose 规范 v3.9 版本,您可以使用 condition 作为 depends_on Pilihan dalam bentuk sintaks panjang.

Saya menggunakan docker compose untuk memulakan projek web MySQL dan Java, Permulaan JavaWeb memerlukan MySQL untuk mencipta data lengkap, jadi saya menggunakan healthcheck

Tetapi mysql healthcheck有问题,这是我的docker-compose

# docker-compose.yml
version: "3.9"  

services:

  mysql:
    build:
      context: ./mysql
    command: [
        'mysqld',
        '--character-set-server=utf8mb4',
        '--collation-server=utf8mb4_unicode_ci',
        '--default-time-zone=+8:00',
        '--lower-case-table-names=1'
    ]
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: fuba-db
      MYSQL_ROOT_PASSWORD: fb123456
    healthcheck:
      test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD  -e 'SELECT * FROM factor_header' fuba-db "
      interval: 1s
      timeout: 3s
      retries: 3

  redis:
    build:
      ......

  nginx:
    build:
      ......

  fubaquant:
    build:
      context: ./webapps
    ports:
      - "8080:8080"
    volumes:
      - /mnt/java/jar:/home/ruoyi  #jar包
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_started

Pernyataan yang salah ialah:

test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD  -e 'SELECT * FROM factor_header' fuba-db "

Keluaran konsol:

pro-mysql-1      | 2022-04-07T08:16:54.203710Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
container for service "mysql" is unhealthy

Disebabkan tanggungan fubaquant_pada pemeriksaan kesihatan mysql, fubaquant juga tidak dimulakan

Log pemeriksaan kesihatan bekas mysql ialah:

Saya menyemak log pemeriksaan kesihatan mysql dan ia juga sihat

Terima kasih atas bantuan anda

P粉596161915P粉596161915236 hari yang lalu348

membalas semua(2)saya akan balas

  • P粉316890884

    P粉3168908842024-02-27 00:28:40

    Nampaknya anda cuba menjalankan pemeriksaan kesihatan dengan pengguna dan kata laluan yang salah. Anda ada

    healthcheck:
          test: ["CMD", "mysqladmin", "-u$mysql", "-p3456",  "ping", "-h", "localhost"]
    

    $mysql3456 akan cuba menghuraikan nilai pembolehubah ini. Apa yang anda mahu ialah menggunakan yang berikut.

    healthcheck:
          test: ["CMD", "mysqladmin", "-u$MYSQL_USER", "-p$MYSQL_PASSWORD",  "ping", "-h", "localhost"]
    

    Ini kemudiannya akan cuba menggunakan pembolehubah persekitaran pengguna mysql 和密码 123456 运行 mysaqladmin (两者都定义为 docker-compose 上 mysql perkhidmatan)

    balas
    0
  • P粉022140576

    P粉0221405762024-02-27 00:26:56

    Saya mengkonfigurasi pemeriksaan kesihatan untuk hanya membenarkan 3 percubaan semula dengan selang 1 saat. Apabila compose memulakan java, perkhidmatan mysql belum mencapai keadaan yang sihat dalam kelewatan 3 saat ini, jadi karang berhenti dan melaporkan ralat ini. Hanya tambah bilangan percubaan semula dan anda akan baik-baik saja

    balas
    0
  • Batalbalas