我创建了一个Spring示例,并尝试将应用程序构建为Docker镜像,并在Github actions工作流中在Docker容器中运行该应用程序。然后,我进行了简单的Smoke测试,以确保图像按预期创建。
Docker镜像是由Spring Boot Maven插件构建的。
我创建了一个简单的docker-compose文件来同时运行应用程序和数据库。
version: "3.5" # specify docker-compose version, v3.5 is compatible with docker 17.12.0+
# Define the services/containers to be run
services:
db:
image: mysql:8
ports:
- "3306:3306"
# command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: mysecret
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_DATABASE: testdb
volumes:
- ./data/mysql:/var/lib/mysql
- ./mysql-initdb.d:/docker-entrypoint-initdb.d
app:
image: hantsy/rest-many-to-many-example
depends_on:
- db
ports:
- "8080:8080"
environment:
- "SPRING_PROFILES_ACTIVE=dev"
- "SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/testdb"
在Github Actions工作流文件中,当运行
docker-compose
命令时,似乎无法通过localhost访问。我创建了一个Java测试,并使用curl
命令进行测试,在相同的流程中都无法连接到http://localhost:8080。请查看完整的Github actions workflow文件。
我还尝试使用PublicIP actions获取公共IP并通过公共IP进行访问,但失败了。请在此处查看公共IP actions步骤配置here。 但是在我的本地机器上,访问http://localhost:8080正常工作。