Ma pile technologique semble trop héritée et pathétique Je veux rompre avec l'oncle hérité et recommencer en tant qu'ingénieur J'ai commencé à étudier. Merci & # x1f600;
J'ai donc décidé d'étudier d'abord Docker.
Diagramme
Informations sur le logiciel OS:Windows10 Docker:19.03.12 Program:Java11 MySQL:8.0.21 Adminer:latest WebBrowser: tout
Pour le moment, cette fois depuis mon propre programme Java sur le système d'exploitation hôte Défi d'accéder à la base de données sur le conteneur.
Préparé en organisant légèrement docker-compose.yml sur la page d'explication de MySQL sur Docker Hub. Page MySQL DockerHub
# Use root/example as user/password credentials
version: '3.1'
services:
db:
image: mysql:8.0.21 #Changement
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: hoge #ajouter à
MYSQL_USER: hoge #ajouter à
MYSQL_PASSWORD: hoge #ajouter à
ports: #ajouter à
- 3306:3306 #ajouter à
adminer:
image: adminer:latest
restart: always
ports:
- 8080:8080
La partie avec # est la partie arrangement. J'ai senti que la version de l'image MySQL changerait si je spécifiais la dernière, j'ai donc spécifié 8.0.21. Cette fois, il est accessible de l'extérieur du conteneur, donc Ajoutez une base de données appropriée et définissez le port 3306 pour qu'il soit exposé à l'extérieur.
Dans le même dossier que le fichier de configuration ci-dessus Commencez par la commande docker-compose.
docker-compose up
Puisqu'il s'exécute au premier plan, tout en regardant le journal apparaître Vérifiez s'il est sur une autre console
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
L'administrateur semble être un client Web capable d'exploiter des bases de données créées avec PHP. Avec les conteneurs MySQL et Adminer en cours d'exécution http://localhost:8080/ Lorsque vous accédez, l'écran suivant apparaîtra Entrez la base de données et les informations utilisateur décrites dans docker-compose.yml précédemment.
Puis avec une table appropriée comme celle-ci
Insérez un enregistrement approprié comme celui-ci et la base de données est terminée.
Tout d'abord, décrivez les dépendances du pilote MySQL dans 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'
}
Créez ensuite une classe qui lance une requête SQL vers MySQL et affiche le résultat.
public class DockerMySQLAccessor {
public static void main(String[] args) {
System.out.println("Accéder à MySQL dans le conteneur Docker");
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();
}
}
}
Exécutez le code Java à partir d'Eclipse. Vous pouvez obtenir le disque que vous venez de mettre! Je l'ai fait. (´ ・ ω ・ `) v
Pour le moment, configurez facilement un serveur DB virtuel à l'aide de Docker, Il pouvait être consulté à partir d'un programme local.
Cette fois, c'est une touche Docker J'ai utilisé le docker-compose soudainement parce que les paramètres étaient presque complètement copiés. En fonctionnement réel, créez-vous un Dockerfile pour chaque conteneur et créez-vous une image? En outre, je souhaite exécuter le programme sur le conteneur et communiquer entre les conteneurs. Cette fois encore ici.
C'était une excellente référence pour mettre Docker dans Win10. Merci <(_ _)> Introduction à Docker par Legacy Engineer
Recommended Posts