Login Serviceの適用


📘DBの作成



DBの作成で行った内容では、docker-compose.ymlで
networks:
    default:
        external:
            name: msa
コンテンツのみを追加して再生成し、schemaとtableの順に生成します.
CREATE TABLE `users` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `USER_ID` varchar(10) NOT NULL,
  `NAME` varchar(20) NOT NULL,
  `PW` varchar(150) NOT NULL,
  `ADDRESS1` varchar(10) DEFAULT NULL,
  `ADDRESS2` varchar(50) DEFAULT NULL,
  `ADDRESS3` varchar(50) DEFAULT NULL,
  `TEL` varchar(20) DEFAULT NULL,
  `CREATED_AT` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `USER_ID_UNIQUE` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

🔨構成の変更

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://eureka:8761/eureka

token:
  expiration_time: 86400000 #ms단위
  secret: 비밀번호 키

spring:
  jpa:
    hibernate:
      ddl-auto: none
    show-sql: true
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://maria:3306/스키마
    username: db 아이디
    password: db 비밀번호
設定値を次のように変更します.
さらに、profileもlogin-prodで実行できるようにファイルを生成した.

🐋Dockerfileの作成

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

VOLUME /tmp

# jar파일 복사
COPY build/libs/login-service-1.0.jar login.jar
ENTRYPOINT ["java","-jar","login.jar"]

🐋docker-compose.ymlの作成


環境変数で指定する部分は、Config ServerとProfile名です.
version: '3.7'
  
services:
    login:
        image: "ililil9482/login:1.0"
        container_name: login
        environment:
            - spring.cloud.config.uri=http://config:8888
            - spring.cloud.config.profile=prod
networks:
    default:
        external:
            name: msa
ここで重要なのは、portまたはexposeを単独でコンテナ間に接続する必要がないことです.その理由は、Eurekaにサーバが登録されているため、Eurekaはゲートウェイへのアクセスを要求したときにサーバに接続できるため、ポートやexposeで単独で接続する必要はなく、サービス名で接続するだけであることを理解してスキップしましょう.

🤵‍♂️jenkinsパイプラインの作成

pipeline {
    agent any

    stages {
        stage('Clone') {
            steps {
                git branch: 'main', credentialsId: '8e8302f1-6b98-4bfe-9981-2e027e49089b', url: 'https://github.com/juno-choi/jayeon-login.git'
            }
        }
        stage('Clean') {
            steps {
                sh 'cd /var/jenkins_home/workspace/login'
                sh 'chmod +x gradlew'
                sh './gradlew clean'
            }
        }
        stage('Build') {
            steps {
                sh './gradlew build'
            }
        }
        stage('HUB Push') {
            steps {
                sh 'docker build -t ililil9482/login:1.0 .'
                sh 'docker push ililil9482/login:1.0'
            }
        }
        stage('Down') {
            steps {
sshPublisher(publishers: [
  sshPublisherDesc(configName: 'publisher',
  transfers: [
    sshTransfer(cleanRemote: false,
    excludes: '',
    execCommand: 'cd /msa/login && 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/login && 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)
])
            }
        }
    }
}

通常のログイン-サービスが登録されています.今からお願いします!

👊テスト


登録



postmanは指定したurlに登録し、正常に動作するように要求します.

その後dbも我々の考えた論理に従って正常なログイン処理を行った.

ログイン



正常にログインし、トークンを発行することで、返される論理を確認できます.
Kafkaは現在不要であるため,サービス自体はdbにinsertを送信するが,orderサービスを開発するとともに,Kafkaに変更する操作が必要である.

勘定科目の適用時にうろうろする場所


maria dbのデータはコンテナを上下に移動してもそのままであるが,データが失われる現象がある.もう1つのmariadbは、データが/var/lib/mysqlの下に格納されていると言っていたので、私もそうしました.ただし、データはボリュームフォルダに保存されていません.だから調べてみました.

私のデータベースがどうなっているのかまだ分かりませんが、/config/databases下に調整されているので、相応の経路でボリュームをつかんで運行しています.コンテナが降りてから上がっても、正常に運行できます!