我有一个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
我该怎么做?很抱歉出现菜鸟问题。
答案 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