Open peterkappelt opened 6 years ago
Hi Gabriel,
no - not yet.
Are you sure you mean ARM32V2? I've never seen that architecture before, was it just a typo and you need ARM32V7/ ARM32V6 (e.g. for the Raspberry Pi)?
However, gBridge images are based on the "alpine" and "php" docker images. Both of them should be available for ARM32V6, I'm unsure about ARM32V7. If you tell me what (exact) architecture you need, I could provide images for them.
Armv6, 32 bit would be nice! So i can try this out in a Raspberry Pi Zero.
Thanks!
ARM32V6 images are now available, though I couldn't test them, because I currently don't have a RPi with Docker running available.
https://hub.docker.com/r/pkap/gbridge-redis-worker-arm32v6/ https://hub.docker.com/r/pkap/gbridge-web-arm32v6/
After creating your docker compose file (https://about.gbridge.kappelt.net/dockergen/), you need to substitute package names by hand:
If you are using Redis and/ or MySQL in the docker container too, you need to replace them too:
Thanks! I have to solve first the fact docker-compose > 1.13 does not work in Pi and then will test this and report back.
Hi,
let me know when you made any progress or I can help you.
If you want to get quick results in the meantime: I'd like to invite you to the beta test of the hosted gBridge: https://about.gbridge.kappelt.net
Thanks Peter! I'm having trouble finding an arm32v6 version of docker compose. There is one version in the official repo but it's old and does not support composer 3 specification. Is there an alternative to composer to get all running?
It is possible to run it without compose, but I wouldn't recommend it. You basically need to "translate" the compose file to plain docker commands, but you have to care about network creation and startup order then.
After a quick search, I couldn't find current docker-compose-files for your architecture either. However, since you've docker installed on your system, it should be straightforward to build the current docker-compose on your own: https://www.berthon.eu/2017/getting-docker-compose-on-raspberry-pi-arm-the-easy-way/
The simplest way would be to just change to compose file version. Just change version: '3'
to version: '2'
. It seems to work, since currently no features of version 3 are used. Version 2 is compatible with your compose version, isn't it?
As ist seems, you could install a new compose version with the Python package manager, too:
apt-get remove docker-compose
pip install docker-compose
(You might need to install pip, I think the apt-package is called "python-pip")
Thanks! I succesfully installed docker via pip in a virtualenv but decided to try the available docker-compose (1.8) that is in the official reppo by changing the version file to 2. Looks like this is not liked by it: services.web.ports is invalid: Invalid port ":80", should be [[remote_ip:]remote_port[-remote_port]:]port[/protocol]
In the config file the port web line is: ports:
Diy you fill in the field "Webserver Port" in the "App Settings" while generating the docker file?
Nice catch!
Pulling database (mysql:5)... 5: Pulling from library/mysql ERROR: no matching manifest for unknown in the manifest list entries
:O
Did you swap out the docker image names, too? It tries to pull the official mysql package, that is not available for ARM.
Try replacing mysql:5
with hypriot/rpi-mysql:latest
Took my time and started from scratch. Made a new Google Action project and changed the containers in the composer file.
That MYSQL container asks for a MYSQL_ROOT_PASSWORD, added that env variable to the file and stopped whinning.
Now i get constantly this: redis-worker_1 | MQTT client reconnected!
redis-worker_1 | > gbridge-redis-worker@1.0.0 start /usr/src/gbridge-redis-worker redis-worker_1 | > node index.js redis-worker_1 | redis-worker_1 | Redis client (subscribe) connected redis-worker_1 | Redis client (cache) connected redis-worker_1 | MQTT client offline! redis-worker_1 | Redis client (subscribe) successful subscribe to gbridge:u:d:* redis-worker_1 | MQTT client reconnected! redis-worker_1 | MQTT client reconnected! gbridge_web_1 exited with code 139 redis-worker_1 | MQTT client reconnected! redis-worker_1 | MQTT client reconnected! redis-worker_1 | MQTT client reconnected! redis-worker_1 | MQTT client reconnected! redis-worker_1 | MQTT client reconnected! redis-worker_1 | MQTT client reconnected! redis-worker_1 | MQTT client reconnected!
What can it be? I already tried running the docker as super user.
Thanks!
PS: does all the logging happens in ram? Because running in a sdcard, i need to minimize the writing.
Hello? 😊
Sorry, I've been on abroad the last couple of days.
This message basically means, that the script inside of one of the docker containers is unable to connect to your MQTT server.
Could you please double check and show the config of the mqtt broker in the docker-compose.yml file?
What MQTT broker have you running (Mosquitto, HiveMQ, ...)? Which version?
GBRIDGE_REDISWORKER_MQTT: 'mqtt://localhost:51883' mosquitto version 1.5.1 mosquitto is an MQTT v3.1.1 broker.
Tried setting up a mqtt user just in case there was some kind of conflict with other device connected to the broker and also had this issue.
Also tried removing the mqtt:// and same issue.
In mosquitto's config the port is 51883 and the protocol mqtt. Had no issues connecting with other google bridge but externally, not in the localhost.
Local host points to the docker container, not the docker host.
Try to use the external IP of the docker host (e.g. 192.x.x.x or 172.x.x.x) instead of localhost
Yeah! It worked. But now i get:
gbridge_web_1 exited with code 139
The gbridge_web-Container is based on the armhf/php:7.0-apache
which is known to be buggy and is now deprecated.
However, I (currently) can't find another docker container that contains Apache and PHP for arm32v6. It would be great if you could do a quick search too, in case I'm missing something.
It might be possible to use Nginx with PHP, but I haven't worked with Nginx in the last year. So it'll take some time for me to implement.
I'll look into it, but I think Apache is very bloated for what is needed, NGINX is more lightweight.
Yeah - totally true. But I know how Apache works and needs to by configured, so it is my first choice here ;)
Nginx would probably be way better as a long term solution.
And what are your requirements for the web side of your application? I may help you out to make the transition.
I've tried to convert it to NGINX. It works, at least on x86.
The new NGINX version is not yet supported by the Web-Docker-Generator, since I've not yet tested this new version thoroughly.
Please modify your docker-compose-file as shown:
version: '3'
networks:
backend:
driver: bridge
web_frontend:
driver: bridge
services:
database:
#!!! leave as it is
cache:
#!!! leave as it is
web:
image: pkap/gbridge-web-nginx:arm32v6-latest
restart: always
ports:
#!!! leave as it is
environment: &webapp-environment
#!!! leave environment keys as they are
links:
- database
- cache
- web-fpm
depends_on:
- database
- cache
- web-fpm
networks:
- web_frontend
- backend
volumes:
- websrc:/var/www
web-fpm:
image: pkap/gbridge-web-fpm:arm32v6-latest
restart: always
networks:
- backend
volumes:
- websrc:/var/www
environment: *webapp-environment
redis-worker:
image: pkap/gbridge-redis-worker:arm32v6-latest
restart: always
environment:
#!!! leave environment keys as they are
networks:
- backend
links:
- cache
depends_on:
- cache
volumes:
websrc:
Have a good one!
Dang:
ERROR: yaml.parser.ParserError: while parsing a block mapping
in "./docker-compose.yml", line 1, column 1
expected <block end>, but found '<block mapping start>'
in "./docker-compose.yml", line 29, column 3
version: '2' //so i can work with my version of composer, but also if change back to 3 i get the same error
networks:
backend:
driver: bridge
web_frontend:
driver: bridge
services:
database:
image: 'hypriot/rpi-mysql:latest'
restart: always
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 'true'
MYSQL_DATABASE: gbridge_db
MYSQL_USER: gbridge_db
MYSQL_PASSWORD: xx
MYSQL_ROOT_PASSWORD: xx
expose:
- '3306'
networks:
- backend
cache:
image: 'arm32v6/redis:4-alpine'
restart: always
expose:
- '6379'
networks:
- backend
web:
image: pkap/gbridge-web-nginx:arm32v6-latest
restart: always
ports:
- '50080:80'
environment: &webapp-environment
APP_ENV: production
APP_KEY: 'base64:xxx='
APP_DEBUG: 'false'
APP_LOG_LEVEL: warning
APP_URL: 'http://localhost'
DB_CONNECTION: mysql
DB_HOST: database
DB_PORT: 3306
DB_DATABASE: gbridge_db
DB_USERNAME: gbridge_db
DB_PASSWORD: xx
BROADCAST_DRIVER: log
CACHE_DRIVER: file
SESSION_DRIVER: file
SESSION_LIFETIME: 120
QUEUE_DRIVER: sync
REDIS_HOST: cache
REDIS_PASSWORD: 'null'
REDIS_PORT: '6379'
MAIL_DRIVER: smtp
MAIL_HOST: ERROR
MAIL_PORT: ERROR
MAIL_USERNAME: ERROR
MAIL_PASSWORD: ERROR
MAIL_ENCRYPTION: ERROR
GOOGLE_CLIENTID: xxx
GOOGLE_PROJECTID: xxx
links:
- database
- cache
- web-fpm
depends_on:
- database
- cache
- web-fpm
networks:
- web_frontend
- backend
volumes:
- websrc:/var/www
web-fpm:
image: pkap/gbridge-web-fpm:arm32v6-latest
restart: always
networks:
- backend
volumes:
- websrc:/var/www
environment: *webapp-environment
redis-worker:
image: pkap/gbridge-redis-worker:arm32v6-latest
restart: always
environment:
GBRIDGE_REDISWORKER_REDIS: 'redis://cache:6379'
GBRIDGE_REDISWORKER_MQTT: 'mqtt://192.168.1.3:51883'
GBRIDGE_REDISWORKER_MQTTUSER: "xx"
GBRIDGE_REDISWORKER_MQTTPASSWORD: "xx"
GBRIDGE_REDISWORKER_HOMEGRAPHKEY: xx-xx
networks:
- backend
links:
- cache
depends_on:
- cache
volumes:
websrc:
There were a couple of indentation mistakes in your config file, I've fixed them for you.
Please try this one (https://filebin.net/ta8xs2n0m0fchyby/gaz082-config.yaml?t=b3bf2xqb) and just fill in your information
The docker hypriot/rpi-mysql:latest is old version of mySql.
When i execute docker-compose exec web-fpm php artisan migrate
ERROR : docker SQLSTATE[42000]: Syntax error or access violation json null.
It`s be solved by replacing hypriot/rpi-mysql:latest to williamdes/docker-mariadb-debian:10.2.10-armhf
ARM32V6 images are now available, though I couldn't test them, because I currently don't have a RPi with Docker running available.
https://hub.docker.com/r/pkap/gbridge-redis-worker-arm32v6/ https://hub.docker.com/r/pkap/gbridge-web-arm32v6/
After creating your docker compose file (https://about.gbridge.kappelt.net/dockergen/), you need to substitute package names by hand:
- 'pkap/gbridge-web:latest' -> 'pkap/gbridge-web-arm32v6:latest'
- 'pkap/gbridge-redis-worker:latest' -> 'pkap/gbridge-redis-worker-arm32v6:latest'
If you are using Redis and/ or MySQL in the docker container too, you need to replace them too:
- 'redis:4' -> 'arm32v6/redis:4-alpine'
- 'mysql:5' -> 'hypriot/rpi-mysql:latest'; I didn't find an official MySQL container for ARM, don't know whether this one is ok
Please note the correct package names are:
pkap/gbridge-redis-worker:arm32v6-latest
pkap/gbridge-web-fpm:arm32v6-latest
Furthermore;
redis
is fine (it supports ARM architectures out of the box)yobasystems/alpine-mariadb
to be a good alternative to mysql:5
(or, as mentioned in this thread before, hypriot/rpi-mysql
). Also, a bit more up to date image is tobi312/rpi-mysql
.pkap/gbridge-web-nginx:arm32v6-latest
is doing a good job!Hello all. It's been quiet around here, but perhaps someone can give me an idea of what I may be doing wrong with my setup.
I'm hosting my own gBridge in an rPi 3 exposed via duckDns. Pretty good so far. I was able to follow the instructions in this discussion, and substitute packages as necessary with arm32 equivalents. When I run 'docker-compose up', it all seems to work fine. But when I try to go into production mode via 'docker-compose exec web php artisan migrate' I get an error that makes little sense to me:
master@gbridge:/opt/gbridge $ docker-compose exec web php artisan migrate OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused "exec: \"php\": executable file not found in $PATH": unknown
It would suggest that the PATH inside the container is not set up correctly, and therefore it can't find PHP (??).
My docker-compose.yml is as follows (changed the extension to "txt" to make the editor happy):
Can someone help me shed some light on the cause of the error?
Thanks!
-LuisB
Hello all. It's been quiet around here, but perhaps someone can give me an idea of what I may be doing wrong with my setup.
I'm hosting my own gBridge in an rPi 3 exposed via duckDns. Pretty good so far. I was able to follow the instructions in this discussion, and substitute packages as necessary with arm32 equivalents. When I run 'docker-compose up', it all seems to work fine. But when I try to go into production mode via 'docker-compose exec web php artisan migrate' I get an error that makes little sense to me:
master@gbridge:/opt/gbridge $ docker-compose exec web php artisan migrate OCI runtime exec failed: exec failed: container_linux.go:346: starting container process caused "exec: "php": executable file not found in $PATH": unknown
It would suggest that the PATH inside the container is not set up correctly, and therefore it can't find PHP (??).
My docker-compose.yml is as follows (changed the extension to "txt" to make the editor happy):
Can someone help me shed some light on the cause of the error?
Thanks!
-LuisB
you need to run sudo docker-compose exec web-fpm php artisan migrate
@GAZ082 wrote in the gBridge repository (moved):
Hi there. Is there one container for that arch? Thanks!