MSA設定開始[3]EurekaとJenkinsの設定


🐋Dockerfileの作成

FROM openjdk:11-ea-27-jdk-slim

VOLUME /tmp

# jar파일 복사
COPY build/libs/jayeon-discovery-1.0.jar discovery.jar
ENTRYPOINT ["java","-jar","discovery.jar"]
次にgradle設定を変更してjarバージョンを1.0に保存します!
そして必ずbuildしてjarファイルを生成して続けなければなりません.そうしないとjarファイルが見つかりません.
docker build -t ililil9482/discovery:1.0 .
コマンドで画像をマウント

正常に動作していることを確認したらgitにソースファイルをアップロードしjenkinsでパイプラインを作成します

🤵‍♂️ Jenkins設定

pipeline {
    agent any

    stages {
        stage('Clone') {
            steps {
                git branch: 'main', credentialsId: '8e8302f1-6b98-4bfe-9981-2e027e49089b', url: 'https://github.com/juno-choi/jayeon-discovery.git'
            }
        }
        stage('Clean') {
            steps {
                sh 'cd /var/jenkins_home/workspace/Eureka'
                sh 'chmod +x gradlew'
                sh './gradlew clean'
            }
        }
        stage('Build') {
            steps {
                sh './gradlew build'
            }
        }
        stage('HUB Push') {
            steps {
                sh 'docker build -t ililil9482/discovery:1.0 .'
                sh 'docker push ililil9482/discovery:1.0'
            }
        }
        stage('Down') {
            steps {
sshPublisher(publishers: [
  sshPublisherDesc(configName: 'publisher',
  transfers: [
    sshTransfer(cleanRemote: false,
    excludes: '',
    execCommand: 'cd /msa/eureka && sudo docker-compose down',
    execTimeout: 120000,
    flatten: false,
    makeEmptyDirs: false,
    noDefaultExcludes: false,
    patternSeparator: '[, ]+',
    remoteDirectory: '',
    remoteDirectorySDF: false,
    removePrefix: '',
    sourceFiles: '')
  ],
  usePromotionTimestamp: false,
  useWorkspaceInPromotion: false,
  verbose: false)
])
            }
        }
        stage('Up') {
            steps {
sshPublisher(publishers: [
  sshPublisherDesc(configName: 'publisher',
  transfers: [
    sshTransfer(cleanRemote: false,
    excludes: '',
    execCommand: 'cd /msa/eureka && sudo docker-compose up -d',
    execTimeout: 120000,
    flatten: false,
    makeEmptyDirs: false,
    noDefaultExcludes: false,
    patternSeparator: '[, ]+',
    remoteDirectory: '',
    remoteDirectorySDF: false,
    removePrefix: '',
    sourceFiles: '')
  ],
  usePromotionTimestamp: false,
  useWorkspaceInPromotion: false,
  verbose: false)
])
            }
        }
    }
}
以前に作成したパイプラインを参照して、簡単に作成しました.


正常に進んでいることが確認できます.
今私のサーバーにアップロードしましょう.アップロードするときは환경변수を修正するのを忘れないでください!

🐋docker-compose.ymlの作成

version: '3.7'
  
services:
    eureka:
        image: "ililil9482/discovery:1.0"
        container_name: eureka
        expose:
            - 8761
        environment:
            - spring.cloud.config.uri=http://config:8888
networks:
    default:
        external:
            name: msa
環境変数はconfig serverのuri設定を変更しました.localhostではなくコンテナ内部で呼び出されるuriに設定する必要があるためです.portを開くと、対応するuriリクエストが使えますが、すでにネットワークに接続されていますので、対応する設定で行いましょう.
ポートに直接接続するのではなく、コンテナ間の通信だけが必要になったため、portではなくexposeを使用しました.
docker-compose logs
コマンドを入力すると、docker-composeで実行されているcontainerのlogを表示できます.実際にはconfig:8888が正常にロードされ、サーバも正常に動作しています.
次に、実際のeureka画面を確認するためにドメインを要求します.
私はガビアドメイン名を使っています.ガビア設定で確認します.また、nginxの設定も変更する必要があります.

nginx設定の変更

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    server {
        listen 80;
        server_name eureka.jayeonapple.com;

        location / {
            proxy_pass http://eureka:8761;
        }
    }

    server {
        listen 80;
        server_name jenkins.jayeonapple.com;

        location / {
            proxy_pass http://jenkins:8080;
        }
    }

    server {
        listen 80;
        server_name config.jayeonapple.com;

        location / {
            proxy_pass http://config:8888;
        }
    }

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    #include /etc/nginx/conf.d/*.conf;
}
nginx.confファイルには、次のeureka設定が追加されています.
ガビアはインターネットを設置するのがどんなに簡単ですか!

以下に示すように、レコードが追加されています.

ユリカに近づくとユリカが見えます

configで見ることもできます.

ジェンキンスに近づくとジェンキンスが現れます
ここにシャベルの部分nginxがありますconfファイルを変更しdocker-composeでコンテナを再実行すると、不思議なことにジェンキンスにしか接続されていません.いくら設定を見ても間違ったところが見えず、不思議なことにジェンキンスは画面しか現れない.なぜなら、Dockerfileがイメージに再マウントされていないからです.画像のバージョンは、以前のバージョンでコンテナを実行し続けるため、以前はジェンキンスのみで開いていた設定が適用されていたため、ジェンキンスにのみ接続されていました...この問題に気づく方法はnginxコンテナに直接アクセスしてconfファイルを開くことで、私のファイルとは全く異なるファイルがあることに気づきました...だから知ったんだ.ううう