我有一个依赖MySQL的简单Java应用程序。
这是我的docker-compose.yaml
的样子:
version: "3.3"
services:
docker-mysql:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
- MYSQL_PASSWORD=root
volumes:
- /var/lib/mysql
ports:
- 3306:3306
my-app:
build: .
depends_on:
- docker-mysql
ports:
- 8080:8080
这是我的Dockerfile
,用于创建一个容器化的应用程序,即my-app
:
FROM openjdk:8
EXPOSE 8080
ADD /target/Service1-0.0.1.jar Service1.jar
ENTRYPOINT ["java","-jar","Service1.jar"]
当我尝试docker-compose up
时,该应用程序成功启动了Tomcat,但是无法连接到MySQL容器,因为它是在该应用程序之后启动的:
答案 0 :(得分:0)
通常,它假设出现在db容器之后。也docker logs docker-mysql_1 --tail 25 -f
粘贴结果是什么。
另外,尝试像这样为您的数据库容器添加一个卷部分
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
- MYSQL_PASSWORD=root
volumes:
- /var/lib/mysql
答案 1 :(得分:0)
它在文档https://docs.docker.com/compose/startup-order/中非常清楚地说明了这一点
uu = t / (2 * np.pi) # u1# 2
tck, _ = splprep(xy.T, u=uu, s=0, per=True)
xi, yi = splev(np.linspace(0, 1, 200), tck)
plt.subplots(figsize=(10, 10))
plt.plot(xi, yi)#, '.')
plt.axis('equal')
只会按该顺序启动docker构建,不会等待构建完成。您需要提供自己的depends_on
,以确保在继续进行下一个构建之前已启动所需的服务。或者,您可以跳过docker compose,而只需使用按您想要的顺序执行command
的bash脚本即可。