У меня и так уже 2 убунты и одна винда))) Плюс ещё контейнеры)))) Интересно, когда железка ляжет...

Пока отменяем задачу. Слишком много зависимостей в хуке сейчас.

Потому и подаю постепенно, от малого к большему. Но утрамбуется. Просто представь, что у тебя на компе теперь несколько отдельных компьютеров и они между собой взаимодействуют.

Это надо как-то утрамбовать в понимании) Все логично, но требуется потыкать пальцем))

Но в целом понял: только контейнер с сайтом поднимается сам, а для всего остального нужен комплекс контейнеров. Это надо смотреть индивидуально. Смотри, когда мы запускаем API_ENDPOINT=https://pivkarta.ru/api/ docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build pivkarta.ru-2 то API запросы будут лететь на https://pivkarta.ru/api/, то есть да, в таком случае ему нужно только чтобы сайт https://pivkarta.ru был доступен. Альтернативно можно API_ENDPOINT=https://pivkarta.ru/api/ прописать в .env и запускать как обычно docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build pivkarta.ru-2 Просто в .env пишутся переменные окружения по умолчанию, но их можно переопределить, прописав в начале выполнения команды. Так вот, если у тебя будет прописано типа API_ENDPOINT=http://api:4000, то тогда уже запросы будут лететь на этот сервер, а не внешний pivkarta.ru, то есть у тебя должен быть запущен контейнер api. А api куда запросы шлет? На prisma. А prisma что для себя требует? Откуда данные берет? mysql. Вот тебе и цепочка. Как минимум эти контейнеры ты должен запустить для работы. А еще в mysql заглянуть надо? - pma запускаешь. Но в дев-режиме-то у нас порты открыты, а в прод - нет. То есть просто так не достучишься. Значит что нам нужно? Прокси-сервер. А это уже proxy. Помнишь в начале инструкции писал? cp caddy/Caddyfile.sample caddy/Caddyfile Вот посмотри этот сампл. Пример Ничего не узнаешь? То есть если прокси запустишь, http://localhost:2016 - это будет API. http://localhost:2015 - фронт. http://localhost:2017 - PhpMyAdmin. Вот, и уже ты локальный хостинг-провайдер )))

Николай, я не тот контейнер прислал( Там был Up на 4466! Но в целом понял: только контейнер с сайтом поднимается сам, а для всего остального нужен комплекс контейнеров. Спасибо!! Можешь напомнить ,какой плагин к vs для подсвечивания ошибок TS используем? Eslint поставил, а вот чем TS проверяем - не могу найти: видео пересматривать сел)

Контейнер работает: docker- docker-entrypoint.sh Exit 0 pivkarta_mysql_1 mysqld Дима, еще раз: Exit - это не работает, это завершил работу. Up - это вот работает. docker-compose ps показывает не список работающих контейнеров, а просто список контейнеров. У тебя все контейнеры не работают (вероятнее всего ты перезагружался или типа того). В прод-конфиге прописано restart: always. Вот когда контейнер собран с таким параметром, вот тогда он каждый раз пытается опять запуститься, даже если процесс завершился непредвиденно. Тебе пишет ошибки: - Exception in thread "main" java.sql.SQLTransientConnectionException: database - Connection is not available, request timed out after 5000ms. То есть не удалось связаться с базой данных за отведенные 5 секунд. - Caused by: java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=mysql)(port=3306)(type=master) : mysql Просто факт: не удалось связаться с базой данных - Caused by: java.net.UnknownHostException: mysql А вот это уже причина: не известный хост mysql. То есть призма просто не знала по какому адресу находится база данных. А не знала потому что контейнер не запущен и докер в своей сети не выделил ему хост. Это же все внутренние хосты. Решение: перезапусти все контейнеры разом. docker-compose restart Скорее всего это поможет, так как у тебя контейнеры все уже собраны, просто не запущены. Но есть небольшая вероятность, что призма все-таки не запустится (хотя вероятность мааленькая). После рестарта проверь контейнеры docker-compose ps. Если призма так же Exit 1, но другие контейнеры работают, просто опять ее собери или даже просто рестартани конкретно ее docker-compose restart prisma, но скорее всего это не потребуется.

Николай, опять странная засада: выполняю Prisma-сервер docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build prisma В дев-режиме будет крутиться на порту 4466 Контейнер работает: docker- docker-entrypoint.sh Exit 0 pivkarta_mysql_1 mysqld docker-pivkarta_pivkar bash -c yarn dev Up 0.0.0.0:3100->3000/tc ta.ru-2_1 p docker-pivkarta_pma_1 /docker-entrypoint.sh Exit 0 apac ... docker- /bin/sh -c Up 0.0.0.0:4466->4466/tc pivkarta_prisma_1 /app/start.sh p docker- /bin/parent caddy Exit 0 И сразу docker- /bin/sh -c Exit 1 pivkarta_prisma_1 /app/start.sh Лог выдает такой: Exception in thread "main" java.sql.SQLTransientConnectionException: database - Connection is not available, request timed out after 5000ms. at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:548) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:186) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:83) at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:14) at slick.jdbc.JdbcBackend$BaseSession.<init>(JdbcBackend.scala:453) at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:46) at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:37) at slick.basic.BasicBackend$DatabaseDef.acquireSession(BasicBackend.scala:249) at slick.basic.BasicBackend$DatabaseDef.acquireSession$(BasicBackend.scala:248) at slick.jdbc.JdbcBackend$DatabaseDef.acquireSession(JdbcBackend.scala:37) at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:274) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=mysql)(port=3306)(type=master) : mysql at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:161) at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.connException(ExceptionMapper.java:79) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1040) at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:490) at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:144) at org.mariadb.jdbc.Driver.connect(Driver.java:90) at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430) at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64) at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570) at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563) at java.util.concurrent.FutureTask.run(FutureTask.java:266) ... 3 more Caused by: java.net.UnknownHostException: mysql at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:398) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1032) ... 14 more Exception in thread "main" java.sql.SQLTransientConnectionException: database - Connection is not available, request timed out after 5000ms. at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:548) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:186) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:83) at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:14) at slick.jdbc.JdbcBackend$BaseSession.<init>(JdbcBackend.scala:453) at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:46) at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:37) at slick.basic.BasicBackend$DatabaseDef.acquireSession(BasicBackend.scala:249) at slick.basic.BasicBackend$DatabaseDef.acquireSession$(BasicBackend.scala:248) at slick.jdbc.JdbcBackend$DatabaseDef.acquireSession(JdbcBackend.scala:37) at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:274) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=mysql)(port=3306)(type=master) : mysql at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:161) at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.connException(ExceptionMapper.java:79) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1040) at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:490) at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:144) at org.mariadb.jdbc.Driver.connect(Driver.java:90) at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430) at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64) at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570) at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563) at java.util.concurrent.FutureTask.run(FutureTask.java:266) ... 3 more Caused by: java.net.UnknownHostException: mysql at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:398) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1032) ... 14 more Exception in thread "main" java.sql.SQLTransientConnectionException: database - Connection is not available, request timed out after 5000ms. at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:548) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:186) at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:83) at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:14) at slick.jdbc.JdbcBackend$BaseSession.<init>(JdbcBackend.scala:453) at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:46) at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:37) at slick.basic.BasicBackend$DatabaseDef.acquireSession(BasicBackend.scala:249) at slick.basic.BasicBackend$DatabaseDef.acquireSession$(BasicBackend.scala:248) at slick.jdbc.JdbcBackend$DatabaseDef.acquireSession(JdbcBackend.scala:37) at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:274) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=mysql)(port=3306)(type=master) : mysql at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:161) at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.connException(ExceptionMapper.java:79) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1040) at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:490) at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:144) at org.mariadb.jdbc.Driver.connect(Driver.java:90) at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430) at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64) at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570) at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563) at java.util.concurrent.FutureTask.run(FutureTask.java:266) ... 3 more Caused by: java.net.UnknownHostException: mysql at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:398) at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1032) ... 14 more

То есть мы заново формируем контейнер ,а не запускаем старый? Если ничего не поменялось в исходниках контейнера, то он ничего не будет пересобирать. Для этого придется сделать docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build --force-recreate pivkarta.ru-2 Но в docker-compose.dev.yml есть дополнительные настройки контейнера, которые не были применены, когда ты запустил контейнер без указания этого файла, поэтому надо по новой запустить. Нельзя просто так перезапустить имеющийся контейнер с новыми конфиг-файлами.

Можешь логи посмотреть контейнера. docker-compose logs pivkarta.ru-2 или docker logs docker-pivkarta_pivkarta.ru-2_1 Логи выше кинул. >> Только не docker-compose start pivkarta.ru-2, а docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build pivkarta.ru-2 То есть мы заново формируем контейнер ,а не запускаем старый?