буду признателен за ответ. Цель развернуть два контейнера с базой и приложением и заставить приложение соединятся к бд. Сейчас проблема как раз соединении к бд из соседнего контейнера.
Первый это не много доработанный образ MySql и второй это мое приложение. Я сделал следующую структуру папок для контейнеров
project
mysql
config
my.cnf
scheme
scheme.sql
Dockerfile
myapp
app
app.jar
Dockerfile
docker-compose.yaml
Я сделал следующие Dockerfiles для mysql и для своего приложения
для mysql
FROM mysql:8.0.12
COPY config/ /etc/mysql/
COPY scheme/ /docker-entrypoint-initdb.d/
для моего приложение
FROM openjdk:8-jdk-slim
COPY app/ /usr/src/myapp/
WORKDIR /usr/src/myapp
CMD tail -f /dev/null
В корне проекта создал docker-compose.yaml со следующим содержимым
version: '3'
services:
mysql:
build: ./mysql/
container_name: mysqlbase
ports:
- "3600:3600"
environment:
MYSQL_ROOT_PASSWORD: "root_pass"
MYSQL_USER: "user"
MYSQL_PASSWORD: "userpass"
MYSQL_DATABASE: "Base"
app:
depends_on:
- mysql
build: ./app/
container_name: app
Все это замечательно собирается но цель в том что приложение могло подсоединится к бд, а оно не может.
из приложение коннект создается таким образом
private DataSource() {
try {
cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/Base");
cpds.setUser("user");
cpds.setPassword("userpass");
cpds.setInitialPoolSize(5);
cpds.setMinPoolSize(5);
cpds.setAcquireIncrement(5);
cpds.setMaxPoolSize(20);
cpds.setMaxStatements(180);
cpds.setTestConnectionOnCheckout(true);
cpds.setIdleConnectionTestPeriod(300);
cpds.setMaxIdleTimeExcessConnections(240);
}catch (PropertyVetoException e) {
throw new IllegalArgumentException("Ошибка конфигурирования связи с БД");
}
}
Если захардкодить в jar адрес соседнего контейнера то коннект есть, но я подозреваю что это не правильно. Как это делается во всеми любимых примерах когда дружат mysql и wordpress например? Как приложению правильно указать на какой адрес ему соединяться ?
как всегда поторопился и нашел ответ в соседней теме)
version: '3'
services:
mysql:
build: ./mysql/
container_name: mysqlbase
ports:
- "3600:3600"
environment:
MYSQL_ROOT_PASSWORD: "root_pass"
MYSQL_USER: "user"
MYSQL_PASSWORD: "userpass"
MYSQL_DATABASE: "Base"
networks:
- somenetwork
app:
depends_on:
- mysql
build: ./app/
container_name: app
networks:
- somenetwork
networks:
somenetwork:
driver: bridge
а в самом приложении просто вот так
cpds.setJdbcUrl("jdbc:mysql://mysqlbase:3306/Base");
Это магия и она работает)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Меня интересует такой вопросКогда я делаю парсинг страницы ВК, бот выдает мне информацию на специфическом языке, на котором у меня локализован...
Вопрос такой: У меня есть сертификат корневого УЦ (самоподписанный), промежуточный и ключ ЭЦП (PKCS12)Я из PKCS12 файла достаю сертификат, и теперь...
Считает и записывает в поле класса count количество добавленных элементов в HashSet, а больше и ничегоВсе остальное делает отцовский класс HashSet...
Интересует способ того, как сделать возможность поворачивать карточку свайпом, те