#java #docker #docker-compose #microservices
#java #docker #docker-compose #микросервисы
Вопрос:
У меня есть Java-приложение, использующее двоичные журналы из базы данных Mysql и взаимодействующее с другой службой, которую я разместил на своем локальном хостинге. Как мне создать образ Docker со всеми этими сервисами, чтобы я мог запускать их все одновременно?
Из того, что я слышал, мне нужно использовать docker-compose. Но я действительно не знаю, как это сделать? Должен ли я создавать отдельные контейнеры Docker и связывать их порты? Должен ли я создать один контейнер?
Я создал один файл Dockerfile для приложения Java:
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. Да, вам понадобится несколько контейнеров docker, по одному для каждого процесса. И используйте docker compose, чтобы связать их все вместе в одной сети.
Ответ №1:
Вам следует прочитать документацию 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]
После того, как вы определили свои файлы Dockerfiles, сначала создайте образы с вашими приложениями:
docker-compose build
Затем запустите images (создание контейнера)
docker-compose up -d
Комментарии:
1. Для полноты картины следует упомянуть, что возможно создать пользовательский образ с несколькими сервисами внутри: docs.docker.com/config/containers/multi-service_container . Обычно это действительно плохая идея, поскольку отдельные службы сложнее поддерживать и обновлять.