Docker – 不能从同一个.sh文件执行多个docker运行命令

这是一个完整的Docker新手问题。 我有一个.sh文件,我想调用docker运行两次。 但是,只有第一个docker运行执行,为什么?

mvn clean package docker:build -DskipTests docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -ti something/myapp docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -ti something/myapp 

原因是你用-it运行容器。 这指示Docker分配连接到容器的stdin的伪TTY,并在容器中创build交互式bash shell。 所以当你运行第一个容器时,交互式shell会阻塞第二个容器的执行。

尝试用分离模式运行容器的-dreplace。 请参阅本指南

 docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -d something/myapp docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -d something/myapp 

尝试添加-d以分离模式运行容器:

 docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -d -ti something/myapp docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -d -ti something/myapp