docker compose推送多服务Spring Boot MySQL

docker compose推送多服务Spring Boot MySQL,mysql,spring,docker,docker-compose,dockerfile,Mysql,Spring,Docker,Docker Compose,Dockerfile,我对Docker很陌生,所以如果我没有很好地掌握概念,请容忍我。基本上,我试图将两个服务推送到dockerhub——一个是我的Spring应用程序,另一个是我的后端数据库MySQL。我已经为我的Java应用程序编写了以下Dockerfile: FROM openjdk:15-jdk-alpine COPY application/target/application.jar /application.jar ENTRYPOINT ["java", "-jar", "/application.

我对Docker很陌生,所以如果我没有很好地掌握概念,请容忍我。基本上,我试图将两个服务推送到
dockerhub
——一个是我的Spring应用程序,另一个是我的后端数据库MySQL。我已经为我的Java应用程序编写了以下
Dockerfile

FROM openjdk:15-jdk-alpine

COPY application/target/application.jar /application.jar

ENTRYPOINT ["java", "-jar", "/application.jar"]
这是我的
docker compose.yml
文件

version: '3'
services:
  application-db:
    restart: always
    container_name: application-db
    image: 'mysql:5.7.30'
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: application_database
      MYSQL_USER: alee
      MYSQL_PASSWORD: anotherpassword
    ports:
      - '3308:3306'
    volumes:
      - './initial.sql:/docker-entrypoint-initdb.d/initial.sql'
  application-app:
    restart: on-failure
    image: decade3/sim_backend:first_commit
    build: ./
    expose:
      - '8080'
    ports:
      - '8080:8080'
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://application-db:3306/application_database?useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: alee
      SPRING_DATASOURCE_PASSWORD: anotherpassword
    depends_on:
      - application-db

当我
docker compose up
所有东西都在本地运行时,我能够在本地运行我的应用程序,并提供足够的http请求,并与mysql数据库交互

现在我正在尝试将docker compose推送到dockerhub中,我认为不可能将这两个服务推送到dockerhub中,并根据我所读的内容让它们彼此“交互”


我如何将这两个独立的映像推送到dockerhub中,以便当我提取映像时,应用程序能够在不同的机器上本地运行?还是必须分开进行

您需要将每个图像分别推送到dockerhub,并且无论您想在哪里串联使用这些图像,您都将使用合成文件在它们之间进行编排。

您需要将每个图像分别推送到dockerhub,无论您想在哪里串联使用这些图像,您将使用compose文件在它们之间进行编排。

在您的情况下,只需将一个服务推送到Dockerhub,即Java服务。 mysql映像已经是公共映像,因此配置不会更改

要为spring构建docker映像,您可以执行以下操作

docker构建-f Dockerfile。
然后运行命令将图像推送到dockerhub

您的产品docker-compose.yml将变成(应用程序应用程序服务的注意图像)


在您的情况下,只需要将一个服务推送到Dockerhub,即Java服务。 mysql映像已经是公共映像,因此配置不会更改

要为spring构建docker映像,您可以执行以下操作

docker构建-f Dockerfile。
然后运行命令将图像推送到dockerhub

您的产品docker-compose.yml将变成(应用程序应用程序服务的注意图像)


我认为情况是:1。您可以将图像推/发布到注册表(Docker Hub或任何)2。将docker compose推送(共享)到公共/私有存储库3。您使用docker compose文件从注册表中提取图像我认为场景是:1。您可以将图像推/发布到注册表(Docker Hub或任何)2。将docker compose推送(共享)到公共/私有存储库3。您使用docker compose文件从注册表中提取图像非常感谢ssnk!非常感谢ssnk!

version: '3'
services:
  application-db:
    restart: always
    container_name: application-db
    image: 'mysql:5.7.30'
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: application_database
      MYSQL_USER: alee
      MYSQL_PASSWORD: anotherpassword
    ports:
      - '3308:3306'
    volumes:
      - './initial.sql:/docker-entrypoint-initdb.d/initial.sql'
  application-app:
    restart: on-failure

    image: DOCKERHUB_IMAGE_PATH:latest

    build: ./
    expose:
      - '8080'
    ports:
      - '8080:8080'
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://application-db:3306/application_database?useSSL=false&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: alee
      SPRING_DATASOURCE_PASSWORD: anotherpassword
    depends_on:
      - application-db