Dans Docker, nous pouvons fournir une connectivité réseau au conteneur en sélectionnant différents réseaux. Étonnamment, Docker attribue toujours un réseau par défaut au conteneur même si nous n'avons jamais défini explicitement de réseau. Ce problème dérange de nombreux développeurs car ils peuvent rencontrer certains problèmes liés à la configuration du réseau. Dans cet article, nous expliquerons en détail pourquoi les conteneurs Docker ont des réseaux par défaut et comment choisir entre différents réseaux à l'aide de l'éditeur PHP Youzi.
J'ai du mal à configurer la configuration du docker pour le service go. Ci-dessous un aperçu de ma configuration
go_binary( name = "main_arm64", embed = [":server_lib"], goarch = "arm64", goos = "linux", visibility = ["//visibility:public"], ) container_image( name = "ww_server_image", base = "@go_image_static_arm64//image", entrypoint = ["/main_arm64"], files = [":main_arm64"], ports = [ "8080", "3306", ], )
J'ai un graphql playgroud (http) fonctionnant sur http://localhost:8080
et bien que le port soit censé être public, je ne peux pas accéder à l'interface utilisateur du terrain de jeu.
Ce que je veux faire, c'est :
rules_docker
). docker exec -it ... /bin/bash
dans mon conteneur Docker (cela ne fonctionne pas car bash n'est pas installé, mais je ne sais pas comment installer bash via cette commande containers_image)
L'erreur est la suivante : oci runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $path: unknown
Si j'obtiens l'identifiant de l'image Docker généré et que je l'exécute docker run -p 8080:8080 image_id
Je peux accéder au terrain de jeu graphql mais je ne peux pas communiquer avec le conteneur MySQL
Si je change de réseau comme suit : docker run --network=host -p 8080:8080 image_id
dockerized go 应用程序可以成功与 mysql 容器通信,但随后 graphql playground 变得无法访问。仅当我维护 --network=bridge
时,graphql 游乐场才可访问。我不确定为什么 mysql 也不使用 bridge
parce que je ne précise jamais le réseau au démarrage. C'est ainsi que j'ai obtenu le conteneur MySQL
docker run -p 3306:3306 --name my-db -e MYSQL_ROOT_PASSWORD=testing -d mysql:8.0.31
La réponse est ici : Impossible de se connecter au serveur MySQL à l'aide de Go et Docker - Dialup TCP 127.0.0.1:3306 : connexion : connexion refusée
Il s'avère que je dois réellement accéder à MySQL en utilisant l'adresse suivante car Docker sur Mac utilise une machine virtuelle Linux :
docker.for.mac.localhost:3306
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!