Greifen Sie über ein lokales Java-Programm (Host-Betriebssystem) auf MySQL in einem Docker-Container zu

Einführung

Mein Technologie-Stack fühlt sich zu alt und erbärmlich an Ich möchte mich vom alten Onkel lösen und wieder als Ingenieur anfangen Ich fing an zu studieren. Vielen Dank, dass Sie & # x1f600;

Also habe ich mich entschlossen, zuerst Docker zu studieren.

Was zu bauen (dieses Ziel)

Vorerst aus meinem eigenen Java-Programm auf dem Host-Betriebssystem Herausforderung beim Zugriff auf die Datenbank im Container.

Bauarbeiten

1. Erstellen Sie einen Docker-Container

Vorbereitet durch leichtes Anordnen von docker-compose.yml auf der Erklärungsseite von MySQL in Docker Hub. DockerHub MySQL-Seite


# Use root/example as user/password credentials
version: '3.1'

services:

  db:
    image: mysql:8.0.21 #Veränderung
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: hoge #hinzufügen
      MYSQL_USER: hoge     #hinzufügen
      MYSQL_PASSWORD: hoge #hinzufügen
    ports:                 #hinzufügen
      - 3306:3306          #hinzufügen

  adminer:
    image: adminer:latest
    restart: always
    ports:
      - 8080:8080

Der Teil mit # ist der Anordnungsteil. Ich hatte das Gefühl, dass sich die Version des MySQL-Images ändern würde, wenn ich die neueste Version angeben würde, also habe ich 8.0.21 angegeben. Diesmal wird also von außerhalb des Containers darauf zugegriffen Fügen Sie eine geeignete Datenbank hinzu und stellen Sie den Port 3306 so ein, dass er nach außen zeigt.

Im selben Ordner wie die obige Einstellungsdatei Beginnen Sie mit dem Befehl docker-compose.

docker-compose up

Da es im Vordergrund läuft, während das Protokoll angezeigt wird Überprüfen Sie, ob es sich auf einer anderen Konsole befindet

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
0c5d267f22ee        mysql:8.0.21        "docker-entrypoint.s…"   26 seconds ago      Up 25 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql_db_1
258f5885810d        adminer:latest      "entrypoint.sh docke…"   26 seconds ago      Up 25 seconds       0.0.0.0:8080->8080/tcp              mysql_adminer_1

(´ ・ ω ・ `) Oh

2. Erstellen Sie mit Adminer Tabellen und Daten

Adminer scheint ein Webclient zu sein, der mit PHP erstellte DB betreiben kann. Wenn die MySQL- und Adminer-Container ausgeführt werden http://localhost:8080/ Wenn Sie darauf zugreifen, wird der folgende Bildschirm angezeigt Geben Sie die zuvor in docker-compose.yml beschriebenen DB- und Benutzerinformationen ein. スクリーンショット 2020-09-16 025707.png

Dann mit einem passenden Tisch wie diesem スクリーンショット 2020-09-16 030143.png

Fügen Sie einen entsprechenden Datensatz wie diesen ein, und die Datenbank ist vollständig. スクリーンショット 2020-09-16 030441.png

3. Java-Programmerstellung

Beschreiben Sie zunächst die Abhängigkeiten des MySQL-Treibers in gradle.


apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'

repositories {
    mavenCentral()}

dependencies {
	compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.21'
    testImplementation 'junit:junit:4.12'
}

Erstellen Sie dann eine Klasse, die eine SQL-Abfrage an MySQL sendet und das Ergebnis anzeigt.

public class DockerMySQLAccessor {

	public static void main(String[] args) {

		System.out.println("Greifen Sie im Docker-Container auf MySQL zu");

		try(Connection con = DriverManager.getConnection(
			    "jdbc:mysql://localhost:3306/hoge?useSSL=false",
			    "hoge", // UserId
			    "hoge"  // Password
			  )) {

			PreparedStatement pstmt = con.prepareStatement("select * from TEST_TBL");
			ResultSet rs = pstmt.executeQuery();

			while (rs.next()) {
				System.out.printf("ID:%d, HOGE:%s \n", rs.getInt("ID"), rs.getString("HOGE"));
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

4. Führen Sie aus

Führen Sie den Java-Code von Eclipse aus. スクリーンショット 2020-09-16 032059.png Sie können die Aufzeichnung erhalten, die Sie gerade eingegeben haben! Ich habs gemacht. (´ ・ ω ・ `) v

Zusammenfassung

Richten Sie vorerst einfach einen virtuellen DB-Server mit Docker ein. Es kann von einem lokalen Programm aus zugegriffen werden.

Diesmal ist es ein Docker-Touch Ich habe plötzlich das Docker-Compose verwendet, weil die Einstellungen fast vollständig kopiert wurden. Erstellen Sie im tatsächlichen Betrieb eine Docker-Datei für jeden Container und erstellen Sie ein Image? Außerdem möchte ich das Programm auf dem Container ausführen und zwischen den Containern kommunizieren. Diesmal wieder hier.

Vielen Dank

Es war eine großartige Referenz, um Docker in Win10 zu integrieren. Danke <(_ _)> Einführung in Docker durch Legacy Engineer

Recommended Posts

Greifen Sie über ein lokales Java-Programm (Host-Betriebssystem) auf MySQL in einem Docker-Container zu
Versuchen Sie Hello World mit einfachem Java im Docker-Container
[Docker] Zugriff auf den Host aus dem Container heraus. http: //host.docker.internal:
So erstellen Sie einen Jenkins-Server mit einem Docker-Container unter CentOS 7 von VirtualBox und greifen von einem lokalen PC auf den Jenkins-Server zu
Greifen Sie über eine Java-Anwendung auf Teradata zu
Führen Sie PureScript auf einem Docker-Container aus
Installieren Sie das memcached Plugin unter MySQL und greifen Sie von Java aus zu
[Docker] Kopieren Sie Dateien aus dem Docker-Container auf den Host
Führen Sie x11-Apps in einem Docker-Container aus (unterstützt den Netzwerkzugriff vom Container aus).
Stellen Sie über eine Java-Anwendung eine Verbindung zu Aurora (MySQL) her
So erhalten Sie einen Heapdump aus einem Docker-Container
Kopieren Sie Dateien vom Docker-Container auf den Host (Docker-CP).
Bereitstellen von einem lokalen Docker-Image auf Heroku
Verwenden der Datenbank (SQL Server 2014) aus einem Java-Programm 2018/01/04
[Hinweis] Erstellen Sie mit Docker eine Java-Umgebung von Grund auf neu
Rufen Sie ein in Swift geschriebenes Programm von Processing (Java) auf.
Erstellen einer kompakten Java-Umgebung, die unter Docker ausgeführt wird
Greifen Sie über Java auf API.AI zu
Erstellen eines Docker-Hosts in AWS mit Docker Machine (persönliches Memorandum)
Führen Sie R von einem Tomcat-basierten Java-Prozess unter Amazon Linux aus
Oracle Java 8 unter Docker Ubuntu
Verwenden von Docker von Java Gradle
Greifen Sie von einem Java-Client aus auf das speicherinterne Datenraster Apache Ignite zu