繁体   English   中英

docker-compose 推送多个服务 Spring 引导 MySQL

[英]docker-compose push Multiple Services Spring Boot MySQL

我对 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 push送到 dockerhub - 我认为不可能将这两个服务推送到 dockerhub 并让它们从我所阅读的内容中相互“交互”。

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

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

要为 spring 构建 docker 映像,您可以这样做

docker build -f Dockerfile .

然后运行命令将图像推送到 dockerhub

并且您的生产 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: 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

您需要将每个图像单独推送到 dockerhub,并且无论您想在何处串联使用这些图像,您都将使用 compose 文件在它们之间进行编排。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM