这是一个完整的Docker新手问题。我有一个.sh文件,我想调用docker run两次。但是只有第一个docker run执行,为什么?
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
答案 0 :(得分:3)
原因是您使用-it
运行容器。这指示Docker分配连接到容器的stdin的伪TTY,并在容器中创建交互式bash shell。因此,当您运行第一个容器时,交互式shell会阻止第二个容器的执行。
尝试将-it替换为-d,它以分离模式运行容器。请参阅此guide
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
答案 1 :(得分:0)
尝试添加-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