Closed econcepcion closed 8 months ago
Hi @econcepcion, thanks for opening the issue. I didn’t know about the existence of the pimylifeup guide, so thanks for sharing it. I'm really glad to see someone wrote that.
Regarding your issue, could you please share:
ok last post was a mess.
I am attaching the files.
plantit-logs.csv frontend.csv backend.csv docker-compose.csv
I tried your configuration on my machine and it seems to works as expected.
In your log I'm seeing that the backend
has some problem connecting to the db
, maybe this could be the source of the issue.
| java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
...
Caused by: com.mysql.cj.exceptions.CJException: Access denied for user 'root'@'192.168.112.4' (using password: YES)
Could you please:
ls -l
inside the directory used to run the project?db
created directory and run again the docker compose?Here is ls -l
total 24 -rw-r--r-- 1 root root 437 Mar 2 18:23 backend.env drwxr-xr-x 2 root root 4096 Mar 1 04:11 certs drwxr-xr-x 9 systemd-coredump root 4096 Mar 2 18:31 db -rw-r--r-- 1 root root 766 Mar 2 18:31 docker-compose.yml -rw-r--r-- 1 root root 143 Mar 2 18:09 frontend.env drwxr-xr-x 2 root root 4096 Mar 1 04:11 upload-dir
deleted db folder and tried again. still same error.
Lol. Had to change password for db. I am in.
is there avideo that shows how to use? in particular the trefle integration?
Glad to know that the problem is now fixed! 😁
Unfortunately there's no video tutorial yet, but if you have any question please ask without any problem.
For the Trefle integration:
backend.env
file, in particular like TREFLE_KEY=xyz...
, then redeploy the servicesI have done as you outlined above, but my search never yields results. I even went to Google to ensure I am typing plant names accurately..
small video. https://monosnap.com/file/Ayq4rm655Sxwbcw7QGbmUqGKJKw2wh
Mh this is is strange, could you please:
TREFLE_KEY
property of the backend.env
file?Sort of similar as shown in the video - when I opened the search menu it's briefly showing 2 grey placeholder card then "timeout of 10000ms exceeded" popped up and only showing the Custom card. This is a new installation with TREFLE_KEY
provided
Here's the backend container log
2024-03-03T10:28:28.805Z DEBUG 10 --- [io-8080-exec-10] c.g.m.p.systeminfo.SystemVersionService : retrieve the system version info from GitHub.
2024-03-03T10:28:28.885Z DEBUG 10 --- [nio-8080-exec-7] c.g.mdeluise.plantit.plant.PlantService : Search for DB saved plants
2024-03-03T10:28:35.372Z DEBUG 10 --- [io-8080-exec-10] c.g.m.p.p.PlantInfoExtractorFacade : Search all botanical info
2024-03-03T10:28:35.372Z DEBUG 10 --- [io-8080-exec-10] c.g.m.p.b.BotanicalInfoService : Search for DB saved botanical info (max size 5)
2024-03-03T10:28:35.376Z DEBUG 10 --- [io-8080-exec-10] c.g.m.p.p.trafle.TrefleRequestMaker : Fetching all info from Trefle
And this is the log when I did a search and ended up timing out too
2024-03-03T10:31:14.043Z DEBUG 10 --- [io-8080-exec-10] c.g.m.p.p.PlantInfoExtractorFacade : Extract botanical info matching montera (size 5)
2024-03-03T10:31:14.043Z DEBUG 10 --- [io-8080-exec-10] c.g.m.p.b.BotanicalInfoService : Search for DB saved botanical info matching 'montera' scientific name (max size 5)
2024-03-03T10:31:14.046Z DEBUG 10 --- [io-8080-exec-10] c.g.m.p.p.trafle.TrefleRequestMaker : Fetching info for "montera" from Trefle
Something I found with the backend connection, the request to /api/botanical-info
returned fail but /api/info/ping
was 200
Do you guys still have the problem? If so, could you please provide the entire docker compose log?
I still have the issue, just havent been able to get back to testing. I will try tomorrow.
Ok, giving it another try tonite. Thanks
Mh the log seems to be ok
LOG_LEVEL
property set to DEBUG
in the backend.env
file?curl "https://trefle.io/api/v1/species/search?q=Abies%20alba&limit=1&token=<insert_you_token_here>"
in the shell? Does the service responds correctly?When I curl, i get this back.
{"data":[{"id":136844,"common_name":"Christmastree","slug":"abies-alba","scientific_name":"Abies alba","year":1756,"bibliography":"Gard. Dict. ed. 7.: n.° 1 (1756)","author":"Mill.","status":"accepted","rank":"species","family_common_name":"Pine family","genus_id":7230,"image_url":"https://bs.plantnet.org/image/o/8e171a19f992a34d5d44693472320f6044a5d561","synonyms":["Abies taxifolia","Pinus heterophylla","Abies abies","Abies picea","Abies excelsa","Picea excelsa","Abies vulgaris","Abies pectinata var. columnaris","Abies excelsa var. chlorocarpa","Pinus baldensis","Peuce abies","Picea metensis","Abies pectinata var. pendula","Pinus picea f. columnaris","Abies alba f. columnaris","Abies duplex","Abies pectinata var. podolica","Picea rinzi","Abies candicans","Abies argentea","Abies alba var. aurea","Abies alba f. compacta","Pinus picea f. pendula","Abies alba f. pyramidalis","Picea kukunaria","Abies alba compacta","Pinus lucida","Abies pectinata f. pendula","Abies pardei subsp. pancicii","Abies pardei","Picea pectinata","Pinus pectinata","Picea tenuifolia","Abies alba var. brevifolia","Abies alba f. pendula","Abies alba var. pardei","Abies alba subsp. pardei","Abies alba var. columnaris","Picea pyramidalis","Abies alba var. compacta","Abies excelsa var. baldensis","Picea pectinata var. pendula","Pinus abies var. pectinata","Abies pectinata var. pyramidalis","Abies pectinata var. pendula-gracilis","Pinus picea f. pyramidalis","Abies alba subsp. apennina","Abies metensis","Abies alba var. glauca","Abies miniata","Abies tenuirifolia"],"genus":"Abies","family":"Pinaceae","links":{"self":"/api/v1/species/abies-alba","plant":"/api/v1/plants/abies-alba","genus":"/api/v1/genus/abies"}}],"links":{"self":"/api/v1/species/search?limit=1\u0026q=Abies+alba","first":"/api/v1/species/search?limit=1\u0026page=1\u0026q=Abies+alba","next":"/api/v1/species/search?limit=1\u0026page=2\u0026q=Abies+alba","last":"/api/v1/species/search?limit=1\u0026page=10\u0026q=Abies+alba"},"meta":{"total":10}}
I did not have LOG_LEVEL=DEBUG in backend. just added and restarted app and attached log file
as I search, this is what comes up.
plantit-be | 2024-03-07T17:35:08.404Z DEBUG 13 --- [nio-8080-exec-3] c.g.m.p.p.PlantInfoExtractorFacade : Extract botanical info matching cactus (size 5) plantit-be | 2024-03-07T17:35:08.405Z DEBUG 13 --- [nio-8080-exec-3] c.g.m.p.b.BotanicalInfoService : Search for DB saved botanical info matching 'cactus' scientific name (max size 5) plantit-be | 2024-03-07T17:35:43.231Z DEBUG 13 --- [nio-8080-exec-6] c.g.m.p.p.PlantInfoExtractorFacade : Extract botanical info matching pine (size 5) plantit-be | 2024-03-07T17:35:43.231Z DEBUG 13 --- [nio-8080-exec-6] c.g.m.p.b.BotanicalInfoService : Search for DB saved botanical info matching 'pine' scientific name (max size 5)
Everything seems to be corrected setup, this is really strange.
I just check the deployment with the default README example with the addition of the TREFLE_KEY=my_value
and everything works as expected.
In fact, in my log I have the following lines
...
2024-03-08 17:21:09 2024-03-08T16:21:09.455Z WARN 10 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2024-03-08 17:21:10 2024-03-08T16:21:10.555Z INFO 10 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '/api'
2024-03-08 17:21:10 2024-03-08T16:21:10.562Z INFO 10 --- [ main] c.github.mdeluise.plantit.Application : Started Application in 5.645 seconds (process running for 5.935)
2024-03-08 17:21:10 2024-03-08T16:21:10.563Z INFO 10 --- [ main] c.g.mdeluise.plantit.ApplicationConfig : UPDATE_EXISTING flag set to false. Skipping update of existing species.
2024-03-08 17:21:15 2024-03-08T16:21:15.945Z DEBUG 10 --- [nio-8080-exec-3] c.g.m.p.systeminfo.SystemVersionService : retrieve the system version info from GitHub.
2024-03-08 17:21:16 2024-03-08T16:21:16.010Z DEBUG 10 --- [nio-8080-exec-6] c.g.mdeluise.plantit.plant.PlantService : Search for DB saved plants
2024-03-08 17:21:16 2024-03-08T16:21:16.574Z DEBUG 10 --- [nio-8080-exec-5] c.g.m.p.p.PlantInfoExtractorFacade : Search all botanical info
2024-03-08 17:21:16 2024-03-08T16:21:16.574Z DEBUG 10 --- [nio-8080-exec-5] c.g.m.p.b.BotanicalInfoService : Search for DB saved botanical info (max size 5)
2024-03-08 17:21:16 2024-03-08T16:21:16.580Z DEBUG 10 --- [nio-8080-exec-5] c.g.m.p.p.trafle.TrefleRequestMaker : Fetching all info from Trefle
2024-03-08 17:22:28 2024-03-08T16:22:28.764Z DEBUG 10 --- [nio-8080-exec-3] c.g.m.p.p.PlantInfoExtractorFacade : Extract botanical info matching a (size 5)
2024-03-08 17:22:28 2024-03-08T16:22:28.764Z DEBUG 10 --- [nio-8080-exec-3] c.g.m.p.b.BotanicalInfoService : Search for DB saved botanical info matching 'a' scientific name (max size 5)
2024-03-08 17:22:28 2024-03-08T16:22:28.778Z DEBUG 10 --- [nio-8080-exec-3] c.g.m.p.p.trafle.TrefleRequestMaker : Fetching info for "a" from Trefle
Specifically TrefleRequestMaker
is printing logs so it's used.
I copy here the setup files, please double check that everything matches with your setup
docker-compose.yml
version: "3"
name: plant-it
services:
backend:
image: msdeluise/plant-it-backend:latest
env_file: backend.env
depends_on:
- db
- cache
restart: unless-stopped
volumes:
- "./upload-dir:/upload-dir"
- "certs:/certificates"
ports:
- "8080:8080"
db:
image: mysql:8.0
restart: always
env_file: backend.env
volumes:
- "./db:/var/lib/mysql"
cache:
image: redis:7.2.1
restart: always
frontend:
image: msdeluise/plant-it-frontend:latest
env_file: frontend.env
links:
- backend
ports:
- "3000:3000"
volumes:
- "certs:/certificates"
volumes:
certs:
driver: local
driver_opts:
type: none
o: bind
device: ./certificates
backend.env
#
# DB
#
MYSQL_HOST=db
MYSQL_PORT=3306
MYSQL_USERNAME=root
MYSQL_PSW=root
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=bootdb
#
# JWT_SECRET=putTheSecretHere JWT_EXP=1
#
# USERS_LIMIT=-1 UPLOAD_DIR=/upload-dir API_PORT=8080 TREFLE_KEY=my_key ALLOWED_ORIGINS=* LOG_LEVEL=DEBUG UPDATE_EXISTING=false
#
# CACHE_TTL=86400 CACHE_HOST=cache CACHE_PORT=6379
#
# SSL_ENABLED=false CERTIFICATE_PATH=/certificates/
* `frontend.env`
PORT=3000 API_URL=http://localhost:8080/api WAIT_TIMEOUT=10000 CACHE_TTL_DAYS=7 BROWSER=none SSL_ENABLED=false CERTIFICATE_PATH=/certificates/
<hr/>
If so, please open the network tab of the browser and check if the request is correctly send when you try to search some plants.
<img src="https://github.com/MDeLuise/plant-it/assets/66636702/9b47194f-7ff9-4bf9-a45f-90b2dfb7d9fd" width="100%" />
Here are my files. Just made minor changes... added container_name and change restart to unless-stopped.
version: "3"
services:
backend:
image: msdeluise/plant-it-backend:latest
container_name: plantit-be
env_file: backend.env
depends_on:
- db
- cache
restart: unless-stopped
volumes:
- "./upload-dir:/upload-dir"
- "./certs:/certificates"
ports:
- "8089:8080"
db:
image: mysql:8.0
restart: unless-stopped
container_name: plantit-db
env_file: backend.env
volumes:
- "./db:/var/lib/mysql"
cache:
image: redis:7.2.1
restart: unless-stopped
container_name: plantit-cache
frontend:
image: msdeluise/plant-it-frontend:latest
env_file: frontend.env
container_name: planit
links:
- backend
ports:
- "3009:3000"
volumes:
- "./certs:/certificates"
volumes:
certs:
driver: local
driver_opts:
type: none
o: bind
device: ./certificates
#
# DB
#
MYSQL_HOST=db
MYSQL_PORT=3306
MYSQL_USERNAME=root
MYSQL_PSW=[mypassword]
MYSQL_ROOT_PASSWORD=[mypassword]
MYSQL_DATABASE=bootdb
#
# JWT
#
JWT_SECRET=[my secret]
JWT_EXP=1
#
# Server config
#
USERS_LIMIT=10
UPLOAD_DIR=/upload-dir
API_PORT=8080
TRAFLE_KEY=[my key]
ALLOWED_ORIGINS=*
LOG_LEVEL=DEBUG
#
# Cache
#
CACHE_TTL=86400
CACHE_HOST=cache
CACHE_PORT=6379
#
# SSL
#
SSL_ENABLED=false
CERTIFICATE_PATH=/certificates/
Frontend
PORT=3000
API_URL=http://192.168.1.120:8089/api
WAIT_TIMEOUT=5000
PAGE_SIZE=25
BROWSER=none
SSL_ENABLED=false
CERTIFICATE_PATH=/certificates/
Did you use TRAFLE_KEY=
or TREFLE_KEY=
in the backend.env
file?
Because from your file I'm seeing the parameter with a A
instead of an E
OMG!!!!! Idiot moment. Working Now. Thanks for helping me figure this out.
Really happy to know that now works fine! Initially I made the same error 😂
So thanks for opening the issue and happy planting 🪴
I'll be sharing this with my family. My son will love this. Thank you again for taking time to walk me thru this and for such great project.
Thank you for using and sharing the project! Your support means really a lot As mentioned here, I'm currently focused on developing a standalone app, this will simplify the deployment and enhance a lot the user experience
Different Question. Dont know if you have looked at this. Have you had any experience using Cloudflare tunnels to allow access outside of your home network?
I haven't personally used Cloudflare tunnels, but they should work without any problem. There was a discussion about them opened by a user some time ago, which might have some helpful insights for you.
After update to the last stable versión of backend 0.4.3 the backend IS rebooting constantly _plant-it-backend-1_logs (4).txt
I only update the stack
After update to the last stable versión of backend 0.4.3 the backend IS rebooting constantly _plant-it-backend-1_logs (4).txt I only update the stack
Hi, Thanks for bringing this to my attention. After investigating the issue, it seems that the problem may be related to recent updates to the backend and changes in the database schema files. I apologize for any inconvenience this has caused. To resolve the issue, please follow these steps:
Backup Database Files: Before proceeding, it's important to save a copy of the db
folder to ensure that you can rollback the process if needed.
Execute SQL Command: From the shell, run the following command to remove all entries from the databaseChangeLog
table:
docker exec <db_container_name> mysql -u<db_user> -p<db_password> -e "USE bootdb; DELETE FROM databaseChangeLog;"
For example, if you're using the default backend.env
file, the command would be:
docker exec plant-it-db-1 mysql -uroot -proot -e "USE bootdb; DELETE FROM databaseChangeLog;"
Redeploy Docker Compose: Once the SQL command has been executed, redeploy the Docker Compose stack if necessary.
Please let me know if this resolves the issue. Appreciate your patience.
Not working: docker exec plant-it-db-1 mysql -uroot -proot -e "USE bootdb; DELETE FROM databaseChangeLog;" mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1146 (42S02) at line 1: Table 'bootdb.databaseChangeLog' doesn't exist
This is strange, are you using the mysql:8.0
image as in the docker-compose.yml
quickstart section?
What's the output of docker exec plant-it-db-1 mysql -uroot -proot -e "USE bootdb; show tables;"
?
Also please try to run docker exec plant-it-db-1 mysql -uroot -proot -e "USE bootdb; DELETE FROM DATABASECHANGELOG;"
, in some unix environment table names are case sensitive.
Thisis strange, are you using the mysql:8.0 image as in the docker-compose.yml [quickstart](https://github.com/MDeLuise/plant-it?tab=readme-ov-file#quickstart) section?
Yes
What's the output of docker exec plant-it-db-1 mysql -uroot -proot -e "USE bootdb; show tables;"?
Also please try to run docker exec plant-it-db-1 mysql -uroot -proot -e "USE bootdb; DELETE FROM DATABASECHANGELOG;", in some unix environment table names are case sensitive.
Then i Redeploy Docker Compose but the problem persist _plant-it-backend-1_logs (5).txt
Small progress, now it seems to have another problem and not the one we had previously. Please try to run this
docker exec plant-it-db-1 mysql -uroot -proot -e "DELETE FROM bootdb.DATABASECHANGELOG; INSERT INTO bootdb.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, EXECTYPE, MD5SUM, DESCRIPTION, COMMENTS, TAG, LIQUIBASE, CONTEXTS, LABELS, DEPLOYMENT_ID) VALUES ('addExternalIdUniqueConstraintIfNotExists', 'MDeLuise', 'dblogs/changelog/changes/v1-0-0.xml', '2024-03-16 07:18:12', 16, 'MARK_RAN', '9:edd5ef47cce94adb632f57b7a6ed3729', 'addUniqueConstraint constraintName=botanical_info_external_id_unique, tableName=botanical_infos', NULL, '4.26.0', NULL, NULL, NULL, '0573491549');"
This should
DATABASECHANGELOG
as before,I have to investigate why is failing on your deployment but that check should not be strictly needed.
Now It is working!!! Thank you!!! I add another log for debug the problem If you needed it _plant-it-backend-1_logs (6).txt
Thank you for bringing up the issue and provide the new log!
Avoid duplicated bug reports
Description
I have used the configuration options in both of these examples.
https://docs.plant-it.org/installation/configurations/ as well as https://pimylifeup.com/raspberry-pi-plant-it/
The only change made to the configurations is on the IP. I use 192.168.1.120.
But I still get this error in both attempts.
I see a closed ticket that addressed this issue, but I still need help getting this to work.
Thanks
Expected behaviour
n/a
Steps to reproduce
n/a
Local environment
n/a
Additional info
n/a