如何使用两个Java应用程序和Mysql服务器创建docker容器?

时间:2020-08-16 09:08:22

标签: java docker docker-compose microservices

我有一个Java应用程序,它使用来自Mysql数据库的binlog并与托管在本地主机上的另一个服务进行交互。如何使用所有这些服务创建Docker映像,以便可以一次运行它们?

根据我所听到的,我需要使用docker-compose。但是我真的不知道该怎么做吗? 是否创建单独的Docker容器并链接其端口? 我要创建一个容器吗?

我为Java应用程序创建了一个Dockerfile:

FROM maslick/minimalka:jdk11
WORKDIR /app
EXPOSE 8080
COPY target/foster-maxwell-uber-jar.jar foster-maxwell.jar
COPY config.properties config.properties
CMD java -jar foster-maxwell.jar --config_type MAXWELL_UNSIGNED_KAAS --kaas_config config.yml --zk_timeout 1000

我该怎么做?很抱歉出现菜鸟问题。

1 个答案:

答案 0 :(得分:0)

您应该阅读docker-compose文档:https://docs.docker.com/compose/compose-file/

例如,尝试使用 docker-compose.yml 文件

version: '3.8'

services:

  your-java-app1:
    build:
      context: .          <-- (dir where you have your Dockerfile)
      dockerfile: Dockerfile
    image: yourjavaapp1image:1.0
    container_name: your-java-app1
    depends_on:
      - db

  your-java-app2:
    build:
      context: .          <-- (dir where you have your Dockerfile_for_app2)
      dockerfile: Dockerfile_for_app2
    image: yourjavaapp2image:1.0
    container_name: your-java-app2
    depends_on:
      - db

  db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: [put here your root pass]
       MYSQL_DATABASE: [put here your db name]
       MYSQL_USER: [put here your user]
       MYSQL_PASSWORD: [put here your pass]

一旦定义了Dockerfile,首先,使用您的应用构建映像:

docker-compose build

然后运行图像(创建容器)

docker-compose up -d
相关问题