Docker déploie plusieurs conteneurs Tomcat et ne peut pas accéder à la page par défaut

Lors de l'apprentissage de Docker récemment, j'ai déployé plusieurs conteneurs Tomcat et j'ai constaté que la page d'accueil de Tomcat n'était pas accessible normalement.
Bien sûr, j'ai constaté que l'application n'était pas accessible. La première chose à faire est de vérifier dans l'ordre

   netstat -anp | more   # 查看端口监听是否开启

//再去手动开一下访问的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

Mais mon problème est que l'utilisation d'une simple commande pour démarrer le conteneur Tomcat est accessible normalement.
Lorsque le volume de données est configuré, la page n'est pas accessible.

docker run -d -p 8080:8080 --name  tomcat8080  镜像id

 docker run -d -p 8080:8080 --name my_tomcat -v    \
 /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps  镜像id

La racine du problème : la page d'accueil de Tomcat elle-même est une application, qui est réalisée par plusieurs fichiers dans le répertoire webapps de Tomcat installés par défaut.

Mais dans le répertoire hôte /op/vol_tomcat/webapps se trouve un répertoire vide, ce qui mène à plusieurs conteneurs Tomcat démarrés avec ce volume de données

Le répertoire /usr/local/tomcat/webapps est également vide, aucune page ne peut donc être affichée.

insérer la description de l'image ici
La solution
consiste à obtenir un ensemble de ces fichiers par défaut Tomcat. Vous pouvez utiliser une méthode sans volume de données pour démarrer un conteneur Tomcat, puis en envoyer une copie sur l'hôte, puis utiliser ces données pour regrouper n conteneurs Tomcat et vous assurer
que que le contenu de ces conteneurs est exactement le même

# 非数据卷方式起一个tomcat容器
docker run -d -p 8080:8080 --name  tomcat8080  镜像id
# docker cp 将容器内的webapps 目录拷出到宿主机目录
docker cp tomcat8080:/usr/local/tomcat/webapps /opt/vol_tomcat
# 然后可以用这个数据卷去起很多的tomcat都是可以看到主页的

 docker run -d -p 8081:8080 --name tomcat8081 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps  镜像id
 docker run -d -p 8082:8080 --name tomcat8082 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps  镜像id
 docker run -d -p 8083:8080 --name tomcat8083 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps  镜像id

Mais j'ai inexplicablement l'impression que ce n'est pas différent de java -jar démarrant le port spécifié...

Je suppose que tu aimes

Origine blog.csdn.net/weixin_48011779/article/details/125512277
conseillé
Classement