banner
keney

keney

remain optimistic
twitter

dockerのxxl-job

xxl-job#

イメージを取得する:

docker pull xuxueli/xxl-job-admin:2.3.1

コンテナを起動する:

docker run -d --name=xxl-job-admin \
-p 8088:8080 \
-v /root/docker-data/xxl-job/application.properties:/application.properties \
-v /root/docker-data/xxl-job/applogs:/data/applogs \
xuxueli/xxl-job-admin:2.3.1

/root/docker-data/xxl-job/application.properties の中の application.properties ファイルは xxl-job プロジェクトから取得し、データベース接続のユーザー名とパスワードを変更する必要があります。その後は

application.properties

### web
server.port=8080
server.servlet.context-path=/xxl-job-admin

### actuator
management.server.servlet.context-path=/actuator
management.health.mail.enabled=false

### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/

### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########

### mybatis
mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
#mybatis.type-aliases-package=com.xxl.job.admin.core.model

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://172.17.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

### datasource-pool
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.datasource.hikari.connection-timeout=10000
spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=1000

### xxl-job, email
spring.mail.host=smtp.qq.com
spring.mail.port=25
[email protected]
[email protected]
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

### xxl-job, access token
xxl.job.accessToken=default_token

### xxl-job, i18n (デフォルトはzh_CNで、"zh_CN"、"zh_TC"、"en"を選択できます)
xxl.job.i18n=zh_CN

## xxl-job, triggerpoolの最大サイズ
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100

### xxl-job, ログ保持日数
xxl.job.logretentiondays=30

xxl-job のデータベース接続問題#

背景:

プロジェクトで定期的なタスクスケジューリングが必要で、docker コンテナ内に xxl-job をインストールする必要があります。

直面した問題

デプロイが成功した後、xxl-job のログイン画面にアクセスできますが、ログインをクリックしても反応がなく、しばらくするとデータベース接続が拒否され、MyBatis 接続ユーザーが失敗したというメッセージが表示されます。

原因:

docker コンテナ内では、異なるコンテナは相互に隔離されており、互いに影響を与えません。localhost や 127.0.0.1 を使用しても効果がありません。

解決方法:

考え方:

1、接続するデータベースのユーザー名とパスワードが正しいか確認します。

2、docker 内の異なるコンテナ間の接続アクセスの場合、サーバーの内部ネットワークアドレスを確認する必要があります。

3、マッピングされたポートが対応しているか確認します。

方法:

サーバーの内部 IP アドレスを確認します:

application.properties の設定を変更します:

データベース接続アドレスとパスワード

または、コンテナ名とポート番号の方法でアクセスします。例えば、私の mysql データベースのコンテナ名は n_mysql です。

その場合

spring.datasource.url=jdbc:mysql://n_mysql:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai

注意:これらの操作はすべて同じサーバー上で行われています。

これらの手順を実行する中で、他の原因があるかもしれません:

1、同じサーバー内で操作しているかどうか。異なるサーバー間では、内部ネットワーク IP アドレスを直接使用できず、パブリック IP を使用してデータベースに接続する必要があります。

2、コンテナを作成する際に、マッピングアドレスが正しいかどうか(パス名に限らず)。

3、ファイアウォールが対応するポートを開放しているかどうかを確認します。ただし、バックエンドアドレスにアクセスできるので、ファイアウォールの問題ではないでしょう。

拡張:

docker 内のアプリケーションがホスト上の mysql と Redis にアクセスする
背景:ホストに MySQL、Redis をデプロイし、docker 内に tomcat、jdk をデプロイ
要求:tomcat 内のアプリケーションがホストの MySQL と Redis にアクセスする
方法:
一、接続アドレスは localhost や 127.0.0.1 を使用しないこと
これらのアドレスはコンテナ内のシステムを指し、ホストにアクセスできず、常に mysql/redis 接続異常が報告されます。
二、docker の仮想ネットワークアドレスを使用する
ホストでネットワークインターフェースの状況を確認する ------ifconfig
docker0 の仮想ネットワークの inet アドレスが正しいローカル IP です(例:172.17.0.1)

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。