Moved from Intel to MacM1 on a project - getting an error opening a project previously developed on Intel

======== TEMPLATE BUG FORM ========

Wappler Version : 4.03
Operating System : Mac M1
Server Model: NodeJS
Database Type: MySql8
Hosting Type: Docker Local and Docker Remote on AWS

Expected behavior

What do you think should happen?

I copied over the project folder from my old Mac Intel laptop to my new Mac Mini M1.

I go to setup the project by opening existing folder (this worked on another project fine) but when the project attempts to load I get this error in the wappler console as the project is initiating:

ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
Error Launching Services!

Screenshot below:

Please advise.

As far as I am aware you can not just move the project folder over if your original project was using docker with docker local or remote.

You need to first go to the Intel Mac and find the hidden folder
~/.docker/machine/machines/your-project-folder-to-be-moved

With Wappler closed on the M1, you are going to take that entire folder and move it to the exact same place on the M1 Mac first.

Launch Wappler, Open Project and direct it to the project folder you have been trying with.

If it were me and a brand new Mac, and a brand New install of Wappler I would first.

  1. Create a new blank project matching the spec of the project you are wanting to import, in other words set it to NodeJS, Docker Hosting. Wait for all the homebrew stuff to install everything your new mac needs, like docker desktop, NodeJS, etc.

  2. Once all complete, deploy local.

  3. Edit project settings and match your last one, in other words was your intel on Node12 or 14, was your DB set to MariaDB10.4 or 10.5 etc. Save once set, wait for Wappler to load everything it needs to.

  4. Deploy local again.

  5. Quit Wappler

  6. Move the hidden folder described above with all your certs into the same hidden folder on the new machine, even if you have to manually create the same folder structure manually at first.

  7. Launch Wappler, Open project folder copied from Intel.

Probably a whole bunch of totally un-required steps, but thats how I did mine when I got my M1, and everything worked without error, I figured I would give Wappler the best chance of success by getting the environment all ready for it first.

Hi @psweb - thank you for this.

I did manage to simply copy / open a different project first without any issues at all, or any of the above steps.

However, the only difference between that project, and this project (and your post has highlighted this as the potential problem, thank you) is that the second project I tried to open does indeed have a remote docker machine created and has been deployed. Whereas the first project exists only in a local docker container.

I’m going to take a look at the machines folder and look at your steps to see if I can get this working.

Thank you.

1 Like

@psweb ok so this looks like it might be something to do with MySql8.

I opened Wappler, created a brand new project for the purpose of making sure Wappler is fully initialized.

All went fine until I edit project settings. I add MySql8 as the DB and then save and I get the same error in Wappler console:

Bringing all services up …
Creating volume “new_test_for_initiation__development_redis-volume” with default driver
Pulling db (mysql:8.0)…
8.0: Pulling from library/mysql
ERROR: no matching manifest for linux/arm64/v8 in the manifest list entries
Error Launching Services!

Any ideas team?

1 Like

Ahh, ok, now you need the big brains im afraid, lol, I can’t help you with that one, haha

1 Like

As an update @George and @Teodor I’ve tried running these commands recommended on SO:

docker pull --platform linux/x86_64 mysql
docker pull --platform linux/x86_64/v8 mysql

And then re-saving the project target with MySql8 DB - still fails.

UPDATE:

@George @Teodor

I’ve fixed this issue by adding: platform: linux/amd64 to the docker-compose file. As found in this medium article: https://onexlab-io.medium.com/apple-m1-chip-no-matching-manifest-for-linux-arm64-v8-docker-mysql-5142060a9309

Can this be included in future wappler releases so it doesn’t get overwritten, etc. please for Apple Silicon.

Thanks

1 Like

Have you managed to import your project now.

The reason we take those certificates is so the new mac knows what docker machines are approved in your machines list as you can not regenerate those certs as far as I know.

I backup my machine files everytime I add anything to the Manage area of Docker.

Edit: Can anyone confirm this, hopefully im just being extra cautious for nothing.

I was able to import this project yes, and the issue that I’ve reported was exclusively to do with MySql8 - which can be resolved with the above.

Regarding Docker Machines - you are correct - if you don’t migrate that hidden folder, then they machines won’t appear.

If you move the folder over, then they appear.

Yes this is a known issue with docker and MySQL on the Arm64 M1 chip.

It is actually the fault of MySQL (Oracle ) they haven’t published a MySQL Arm64 image build.

So with the fix above you are actually running MySQL under the intel emulation.

A much better solution is to just use MariaDB - it has fully Arm64 M1 native support and it is full MySQL replacement. So it is great for development specially on Mac M1.

And on your production you can use still MySQL or even there switch to mariadb.

Actually this was already mentioned a few times:

So I have a new Macbook m1 yay!
Now I am trying to transfer my project to this new laptop.
My project is a NodJs/MySQL project.
Following the instructions above I run into the following error and cannot figure out how to resolve this.

Choose in your docker target options to use Debian 11 as base OS image.

ah pfew, the error is gone and the db is running.
Seem like i have to manually install a backup of the database on the local server, but that should be no problem

I can run a MariaDB local and a MysQL on the live server? Should that cause any issues?

Yes those are fully compatible with each other.

You can even run different database types per target if you like. But it is better to stick with similar.

1 Like

Actually MySQL is running behind big time since Oracle took over.

MariaDB has much more modern features and is better kept up to date.

So when possible always use MariaDB instead of MySQL.

1 Like

So I’ll probably update my live database to a MariaDB soon also to keep everything in line.