Giter VIP home page Giter VIP logo

Comments (34)

RobSeder avatar RobSeder commented on May 14, 2024 3

@almosnow, if it helps, I saw this error with Ubuntu 18.04, then 20.04, but when I tried with 22.04, I get past that error. I don't know what caused it. I just assumed it might be related to me using too-new or too-old of an OS, since that is often a problem.

With that said, it still doesn't work. Using Ubuntu 22.04, there are several docker-compose errors like:

ERROR: for init-data-mysql  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-db  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-db  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-data-mysql  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-data-mysql  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-db  Container "ddefd2f2391e" is unhealthy.
ERROR: Encountered errors while bringing up the project.

Even if you can get it to come up, for example using the gitpod example project, the default username/password do NOT appear to be [email protected]/Apitable2022 as described in the main documentations, and you can't "reset" the password unless you own [email protected] email address. So, it DOES come up in the gitpod environment, but you are stuck at a login screen with no way to login.

Bottom line, I'm fresh off the street with this project - I just learned about it. Unfortunately this seems to be a non-starter in every way one might try to evaluate it. Unless I'm missing something? Maybe I just caught this project on a bad day?

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024 3

@almosnow

Generally we don't use the docker-compose package in the official ubuntu repo, as it is too outdated. I recommend you use the following instructions to install docker-compose v2 (the package is called docker-compose-plugin):

https://docs.docker.com/engine/install/ubuntu/

$ apt list docker-compose docker-compose-plugin
Listing... Done
docker-compose/bionic 1.17.1-2 all
docker-compose-plugin/bionic 2.14.1~ubuntu-bionic amd64 [upgradable from: 2.12.2~ubuntu-bionic]

Actually I think you are right that we shoud embrace the new docker compose syntax, but the docker-compose is so ubiquitous that you can still use the shortcut even if you use docker compose v2:

https://github.com/docker/compose

$ which docker-compose 
/usr/local/bin/docker-compose

Let's merge your pr and see if the cure is worse than the disease ;-)

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024 2

I've found a fix, is the install.sh script hosted somewhere in the repo?

@almosnow

The install script is in https://github.com/apitable/apitable.github.io/blob/main/install.sh.

But I still think the root issue lies in incompatible version of docker-compose.

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024 2

This is great, thanks all! Good to see this project is under active development and maintenance. With the help of the comments above, I made a bunch of progress.

Specs

First, on specs. I typically spin up a new VM and give it 2 vCPU's, 2GB of RAM, and 120GB disk to start. I did see this setup was struggling with that, so I gave it 4 vCPU's and 8GB of RAM. With that, RAM consumption seemed to be around 4 or 5GB.

Setting up v2 of Docker Compose

Next, by-default Ubuntu 22.04 is using docker-compose 1.29.2. For getting v2 of docker-compose, I followed the Ubuntu instructions here to point to their repository. Then, did an apt update and apt install docker-compose-plugin and found I had 2.14.1.

@almosnow, this is what you mentioned about the default Ubuntu repositories lagging behind. This is how you could get the newer version.

Fixing the path

However, if I just did docker-compose, it was pointing to the version in the /usr/bin/docker-compose. So, to have the new version be the default, I modified /etc/bash.bashrc and added export PATH="/usr/libexec/docker/cli-plugins:$PATH" towards the top. After a reboot (or source-ing the file) I now am using the v2 of docker-compose.

It would seem I'm off the races. Thanks all!

from apitable.

almosnow avatar almosnow commented on May 14, 2024 1

this seems to be a non-starter in every way one might try to evaluate it

My experience as well and I really really really really wanted this to work.

That's not to discourage AT's team, this seems like a great product, just work on polishing the rough edges!

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024 1

I think it won't be a problem if we stick with the docker compose syntax. I understand your solution, but let's just live with the current install script and gather more evidence before we move. The version check is fairly trivial but maintaining the mac/linux dual compatible bash script is not. Just keep it simple.

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024 1

@RobSeder

hi, I just successfully setup the apitable using ubuntu 22.04. Feel free to join our https://discord.gg/TwNb9nfdBU for direct message.

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
$ apt list docker-ce docker-compose-plugin
Listing... Done
docker-ce/jammy 5:20.10.22~3-0~ubuntu-jammy amd64 [upgradable from: 5:20.10.21~3-0~ubuntu-jammy]
docker-compose-plugin/jammy 2.14.1~ubuntu-jammy amd64 [upgradable from: 2.12.2~ubuntu-jammy]
$ docker compose exec -it mysql mysql -u root -h mysql -papitable@com mysql -e 'show databases; select host from user where user="root";'
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| apitable           |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
+-----------+
| host      |
+-----------+
| %         |
| localhost |
+-----------+

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024 1

I'm glad you can login now. Feel free to create new bug report if you encounter something wrong.

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

@almosnow hi, please make sure you use docker compose v2 and have another try.

$ docker-compose version
Docker Compose version v2.10.0-gitpod.0

from apitable.

almosnow avatar almosnow commented on May 14, 2024

I've found a fix, is the install.sh script hosted somewhere in the repo?

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

@almosnow, if it helps, I saw this error with Ubuntu 18.04, then 20.04, but when I tried with 22.04, I get past that error. I don't know what caused it. I just assumed it might be related to me using too-new or too-old of an OS, since that is often a problem.

With that said, it still doesn't work. Using Ubuntu 22.04, there are several docker-compose errors like:

ERROR: for init-data-mysql  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-db  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-db  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-data-mysql  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-data-mysql  Container "ddefd2f2391e" is unhealthy.
ERROR: for init-db  Container "ddefd2f2391e" is unhealthy.
ERROR: Encountered errors while bringing up the project.

Even if you can get it to come up, for example using the gitpod example project, the default username/password do NOT appear to be [email protected]/Apitable2022 as described in the main documentations, and you can't "reset" the password unless you own [email protected] email address. So, it DOES come up in the gitpod environment, but you are stuck at a login screen with no way to login.

Bottom line, I'm fresh off the street with this project - I just learned about it. Unfortunately this seems to be a non-starter in every way one might try to evaluate it. Unless I'm missing something? Maybe I just caught this project on a bad day?

Thank you very much for your feedback. I've updated the gitpod compose file to make sure the db initialization complete before you can access the site. The default username/password are indeed [email protected]/Apitable2022 as described. Also, make sure you access port 80 from gitpod.

As for the local docker-compose setup, please make sure you use docker compose v2 and have another try:

$ docker-compose version
Docker Compose version v2.10.0-gitpod.0

P.S. I haven't encountered the container unhealthy errors. Does the cpu/memory in high load? Maybe you can tear down and recreate the service using docker-compose down -v and docker-compose up -d, or simply docker-compose up -d to retry.

from apitable.

almosnow avatar almosnow commented on May 14, 2024

Please see the submitted PR,

I have no idea how you can get a docker-compose using v2, mine stays in v1 no matter how much I try to update,

But, I've found that the new preferred syntax is docker compose and that one works well and is the one that's future-proof,

The PR just changes this bits.

from apitable.

almosnow avatar almosnow commented on May 14, 2024

it works perfectly BUT I tried it on an Ubuntu 22.04 box and it doesn't work with the docker coming from apt (but it may work with docker compose). After you upgrade to the latest docker/docker-compose combo it runs with no issues!

However, I think the most robust solution would be to add a check at the top of the script, if there's docker-compose v2 use that one, if there's docker compose then use it.

I will submit a PR for this later on 😄.

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

This is great, thanks all! Good to see this project is under active development and maintenance. With the help of the comments above, I made a bunch of progress.

Specs

First, on specs. I typically spin up a new VM and give it 2 vCPU's, 2GB of RAM, and 120GB disk to start. I did see this setup was struggling with that, so I gave it 4 vCPU's and 8GB of RAM. With that, RAM consumption seemed to be around 4 or 5GB.

Setting up v2 of Docker Compose

Next, by-default Ubuntu 22.04 is using docker-compose 1.29.2. For getting v2 of docker-compose, I followed the Ubuntu instructions here to point to their repository. Then, did an apt update and apt install docker-compose-plugin and found I had 2.14.1.

@almosnow, this is what you mentioned about the default Ubuntu repositories lagging behind. This is how you could get the newer version.

Fixing the path

However, if I just did docker-compose, it was pointing to the version in the /usr/bin/docker-compose. So, to have the new version be the default, I modified /etc/bash.bashrc and added export PATH="/usr/libexec/docker/cli-plugins:$PATH" towards the top. After a reboot (or source-ing the file) I now am using the v2 of docker-compose.

It would seem I'm off the races. Thanks all!

Thanks. @almosnow submited a pr changed the docker-compose syntax to the v2 docker compose, I also think it is more natural to use that. Currently the install script uses docker compose, so it's ok if you don't have docker-compose in your PATH, and you can use docker compose version to check.

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

If I can ask one more question. Both docker-compose up -d and docker compose up -d mostly work, but I get the same, single error on both:

container for service "mysql" is unhealthy

This is a fresh Ubuntu 22.04 machine and all I've done was install docker-compose and run the install script. Any ideas?

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

If I can ask one more question. Both docker-compose up -d and docker compose up -d mostly work, but I get the same, single error on both:

container for service "mysql" is unhealthy

This is a fresh Ubuntu 22.04 machine and all I've done was install docker-compose and run the install script. Any ideas?

Is it possible for the vm to use more cpu or memory? It's weird that mysql can't pass the health-check. And please tell us how long would the mysql become unhealthy.

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

Is it possible for the vm to use more cpu or memory? It's weird that mysql can't pass the health-check. And please tell us how long would the mysql become unhealthy.

I didn't time it exactly, but it runs for probably :10 minutes. I did give the VM 16GB of RAM. It still only seems to use 5-7GB. For disk space, it's only using 13GB, so this doesn't seem to be resource-bound. It it helps, here is the output of docker compose up before it fails (again, after probably :10 minutes):

apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5a6cc8dd05bc47e0b6e5948df61d684c` -> `minio/assets/space/2021/05/29/5a6cc8dd05bc47e0b6e5948df61d684c`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5a7b782d21464e93b6e0ffd95a949cb9` -> `minio/assets/space/2021/05/29/5a7b782d21464e93b6e0ffd95a949cb9`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5a840ed8661644f785fa4c2cc1ba50b6` -> `minio/assets/space/2021/05/29/5a840ed8661644f785fa4c2cc1ba50b6`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5a93e60e2bf841259ae005254e70894e` -> `minio/assets/space/2021/05/29/5a93e60e2bf841259ae005254e70894e`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5b59183cac164ee1a6ca36686c47b8ef` -> `minio/assets/space/2021/05/29/5b59183cac164ee1a6ca36686c47b8ef`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5b674427ed054e9b9392899ba13a051e` -> `minio/assets/space/2021/05/29/5b674427ed054e9b9392899ba13a051e`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5b92a135ed704557a30aaac41be85f8a` -> `minio/assets/space/2021/05/29/5b92a135ed704557a30aaac41be85f8a`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5b9baf7297cc498f9830c7f684f37572` -> `minio/assets/space/2021/05/29/5b9baf7297cc498f9830c7f684f37572`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5bc18d829f9347c5964366ed41746701` -> `minio/assets/space/2021/05/29/5bc18d829f9347c5964366ed41746701`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5be78b999c0d467a8ac43a456ff499cd` -> `minio/assets/space/2021/05/29/5be78b999c0d467a8ac43a456ff499cd`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5bf19df93f5048bb90e57ad49fd616e7` -> `minio/assets/space/2021/05/29/5bf19df93f5048bb90e57ad49fd616e7`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5c04cb28373d497ab17cfd2f22b6354a` -> `minio/assets/space/2021/05/29/5c04cb28373d497ab17cfd2f22b6354a`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5c254d0b0bee4878a069ff4367721277` -> `minio/assets/space/2021/05/29/5c254d0b0bee4878a069ff4367721277`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5c42327988f4491ab98b5d683fd84f2d` -> `minio/assets/space/2021/05/29/5c42327988f4491ab98b5d683fd84f2d`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5c49a3e7f2664613915df3e50a173ee2` -> `minio/assets/space/2021/05/29/5c49a3e7f2664613915df3e50a173ee2`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5c588367b6a8477bbc1e37de58cafed5` -> `minio/assets/space/2021/05/29/5c588367b6a8477bbc1e37de58cafed5`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5cf127340073469eae8d94dc56d83b6d` -> `minio/assets/space/2021/05/29/5cf127340073469eae8d94dc56d83b6d`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5d2f46ebc791418ea41d89efb5d70357` -> `minio/assets/space/2021/05/29/5d2f46ebc791418ea41d89efb5d70357`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5d346d9513524ea79553281a67513ab4` -> `minio/assets/space/2021/05/29/5d346d9513524ea79553281a67513ab4`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5d4208b5d86f4ef0bfcb825c7cca4a88` -> `minio/assets/space/2021/05/29/5d4208b5d86f4ef0bfcb825c7cca4a88`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5d5a14255a644821a79c91d0ffa19423` -> `minio/assets/space/2021/05/29/5d5a14255a644821a79c91d0ffa19423`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5d8b5480e12e41798603548970fff2bf` -> `minio/assets/space/2021/05/29/5d8b5480e12e41798603548970fff2bf`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5db6f97313d944d4afd63b6b1a58d7b4` -> `minio/assets/space/2021/05/29/5db6f97313d944d4afd63b6b1a58d7b4`
apitable-socket-server-1      | {"context":"ClientProxy","level":"info","message":"Available IP Pools:None","timestamp":"2022-12-26 16:45:05.001"}
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5e533934f50e497dbef367b33a538164` -> `minio/assets/space/2021/05/29/5e533934f50e497dbef367b33a538164`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5e5c9d10fe284c5cbf552201fcf70132` -> `minio/assets/space/2021/05/29/5e5c9d10fe284c5cbf552201fcf70132`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5e659b95bb30496ba047b8c5606f0009` -> `minio/assets/space/2021/05/29/5e659b95bb30496ba047b8c5606f0009`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5eac04d7d1c746dba72f7c9c31a21ebe` -> `minio/assets/space/2021/05/29/5eac04d7d1c746dba72f7c9c31a21ebe`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5eb354749335479993fe7cda57768e75` -> `minio/assets/space/2021/05/29/5eb354749335479993fe7cda57768e75`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/5ebe3ca1f49549cabecd41e9446ee4ff` -> `minio/assets/space/2021/05/29/5ebe3ca1f49549cabecd41e9446ee4ff`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/6007f97dc8634f3f8e0da631be7fcfe3` -> `minio/assets/space/2021/05/29/6007f97dc8634f3f8e0da631be7fcfe3`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/601526d7d4534f8f980520355e2a5a4e` -> `minio/assets/space/2021/05/29/601526d7d4534f8f980520355e2a5a4e`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/6027ca19805f44da8fdf2afd52235e08` -> `minio/assets/space/2021/05/29/6027ca19805f44da8fdf2afd52235e08`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/60393d27458c497dab296f88837128bd` -> `minio/assets/space/2021/05/29/60393d27458c497dab296f88837128bd`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/60502266c7da465a9de1fd96b43f42c3` -> `minio/assets/space/2021/05/29/60502266c7da465a9de1fd96b43f42c3`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/605062e7ea134dd181287ff33b49eb0d` -> `minio/assets/space/2021/05/29/605062e7ea134dd181287ff33b49eb0d`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/60c9dad5c82248ea955ce0897231c8a2` -> `minio/assets/space/2021/05/29/60c9dad5c82248ea955ce0897231c8a2`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/60fb057554ba4e5faf8ebaea4d37d224` -> `minio/assets/space/2021/05/29/60fb057554ba4e5faf8ebaea4d37d224`
apitable-init-data-minio-1    | `/minio/data/space/2021/05/29/60fe5d72d99143f8866b7614c4fc3086` -> `minio/assets/space/2021/05/29/60fe5d72d99143f8866b7614c4fc3086`
container for service "mysql" is unhealthy
root@apitable:/opt/apitable$

If I run docker compose up AGAIN, it just takes about 2 minutes and then I see this error:

apitable-web-server-1         | Cannot find string key: report_reason_2
apitable-web-server-1         | Cannot find string key: report_reason_4
apitable-room-server-1        | 2022-12-26 16:53:45: [Nest] 54  - 12/26/2022, 4:53:45 PM   ERROR [TypeOrmModule] Unable to connect to the database. Message: Host '172.18.0.4' is not allowed to connect to this MySQL server. Retrying (9)...
apitable-room-server-1        | 2022-12-26 16:53:45: Error: Host '172.18.0.4' is not allowed to connect to this MySQL server
apitable-room-server-1        |     at Packet.asError (/app/node_modules/mysql2/lib/packets/packet.js:728:17)
apitable-room-server-1        |     at ClientHandshake.execute (/app/node_modules/mysql2/lib/commands/command.js:29:26)
apitable-room-server-1        |     at PoolConnection.handlePacket (/app/node_modules/mysql2/lib/connection.js:456:32)
apitable-room-server-1        |     at PacketParser.onPacket (/app/node_modules/mysql2/lib/connection.js:85:12)
apitable-room-server-1        |     at PacketParser.executeStart (/app/node_modules/mysql2/lib/packet_parser.js:75:16)
apitable-room-server-1        |     at Socket.<anonymous> (/app/node_modules/mysql2/lib/connection.js:92:25)
apitable-room-server-1        |     at Socket.emit (node:events:527:28)
apitable-room-server-1        |     at Socket.emit (node:domain:475:12)
apitable-room-server-1        |     at addChunk (node:internal/streams/readable:315:12)
apitable-room-server-1        |     at readableAddChunk (node:internal/streams/readable:289:9)
apitable-room-server-1        |     at Socket.Readable.push (node:internal/streams/readable:228:10)
apitable-room-server-1        |     at TCP.onStreamRead [as _originalOnread] (node:internal/stream_base_commons:190:23)
apitable-room-server-1        |     at TCP.<anonymous> (/app/node_modules/async-listener/glue.js:188:31)
apitable-room-server-1        | 2022-12-26 16:53:45: [Nest] 54  - 12/26/2022, 4:53:45 PM   ERROR [ExceptionHandler] Host '172.18.0.4' is not allowed to connect to this MySQL server
apitable-room-server-1        | 2022-12-26 16:53:45: Error: Host '172.18.0.4' is not allowed to connect to this MySQL server
apitable-room-server-1        |     at Packet.asError (/app/node_modules/mysql2/lib/packets/packet.js:728:17)
apitable-room-server-1        |     at ClientHandshake.execute (/app/node_modules/mysql2/lib/commands/command.js:29:26)
apitable-room-server-1        |     at PoolConnection.handlePacket (/app/node_modules/mysql2/lib/connection.js:456:32)
apitable-room-server-1        |     at PacketParser.onPacket (/app/node_modules/mysql2/lib/connection.js:85:12)
apitable-room-server-1        |     at PacketParser.executeStart (/app/node_modules/mysql2/lib/packet_parser.js:75:16)
apitable-room-server-1        |     at Socket.<anonymous> (/app/node_modules/mysql2/lib/connection.js:92:25)
apitable-room-server-1        |     at Socket.emit (node:events:527:28)
apitable-room-server-1        |     at Socket.emit (node:domain:475:12)
apitable-room-server-1        |     at addChunk (node:internal/streams/readable:315:12)
apitable-room-server-1        |     at readableAddChunk (node:internal/streams/readable:289:9)
apitable-room-server-1        |     at Socket.Readable.push (node:internal/streams/readable:228:10)
apitable-room-server-1        |     at TCP.onStreamRead [as _originalOnread] (node:internal/stream_base_commons:190:23)
apitable-room-server-1        |     at TCP.<anonymous> (/app/node_modules/async-listener/glue.js:188:31)
apitable-room-server-1        | 2022-12-26T16:53:45: PM2 log: App name:nest id:3 disconnected
apitable-room-server-1        | 2022-12-26T16:53:45: PM2 log: App [nest:3] exited with code [1] via signal [SIGINT]
apitable-room-server-1        | 2022-12-26T16:53:45: PM2 log: App [nest:3] will restart in 100ms
apitable-room-server-1        | 2022-12-26T16:53:45: PM2 log: App [nest:3] starting in -cluster mode-
apitable-room-server-1        | 2022-12-26T16:53:45: PM2 log: App [nest:3] online
apitable-init-data-minio-1    | `/minio/data/public/2021/08/25/2820cef9a6bb42ed92afaea3af5ce7e0` -> `minio/assets/public/2021/08/25/2820cef9a6bb42ed92afaea3af5ce7e0`
apitable-init-data-minio-1    | `/minio/data/public/2021/08/25/313be0678f624065b57a73adb09ef054` -> `minio/assets/public/2021/08/25/313be0678f624065b57a73adb09ef054`
apitable-init-data-minio-1    | `/minio/data/public/2021/12/03/05f64261f4e045e1bb6596f09b184fad` -> `minio/assets/public/2021/12/03/05f64261f4e045e1bb6596f09b184fad`
apitable-init-data-minio-1    | `/minio/data/public/2021/12/03/000365252fb048a6a0c60027e674fdd2` -> `minio/assets/public/2021/12/03/000365252fb048a6a0c60027e674fdd2`
apitable-init-data-minio-1    | `/minio/data/public/2021/12/03/32e7654a89714fc98cc0f255c4f1c6ef` -> `minio/assets/public/2021/12/03/32e7654a89714fc98cc0f255c4f1c6ef`
apitable-init-data-minio-1    | `/minio/data/public/2021/12/03/4d693321291342f281c996f5754de996` -> `minio/assets/public/2021/12/03/4d693321291342f281c996f5754de996`
apitable-init-data-minio-1    | `/minio/data/public/2021/12/03/4d1fc8b82bc147bd9d8a94401b8643d0` -> `minio/assets/public/2021/12/03/4d1fc8b82bc147bd9d8a94401b8643d0`
container for service "mysql" is unhealthy

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

@RobSeder

Could you help us check the log of the mysql container by running docker compose logs mysql? And do you know if there are firewall service or another mysql instance managed by systemd?

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

No firewall or anything peculiar. This is a pretty barebone Ubuntu 22.04 "cloud image" running in a ProxMox hypervisor. That error message seems to be a regular MySQL error where only certain IP addresses can connect. Perhaps the NAT network in my Docker instance isn't as expected? If it helps, here is a docker network inspect ... of the apitable network:

[
    {
        "Name": "apitable_apitable",
        "Id": "231dfcae55b5562e93873dae00238486998c102a3002d59bfcb181bf484d20a2",
        "Created": "2022-12-26T15:42:33.485665942Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0e50224ed5faa0c10d735ca8fde8351fea70f34c85e79df2100e078bb8e6bd71": {
                "Name": "apitable-minio-1",
                "EndpointID": "760b051f46c1d0c6aa12a40874d48385cf0c86544d80a3c6ea07b6f1d7133b38",
                "MacAddress": "02:42:ac:12:00:08",
                "IPv4Address": "172.18.0.8/16",
                "IPv6Address": ""
            },
            "117f22ecce6470e420ed65f6b1ed8ef76b895b950e257a8acc99d523573b6150": {
                "Name": "apitable-web-server-1",
                "EndpointID": "e466f2347639370d9d60f286c7dd77869e73e6bcdf6a2933cb1d2c0d111747cd",
                "MacAddress": "02:42:ac:12:00:0b",
                "IPv4Address": "172.18.0.11/16",
                "IPv6Address": ""
            },
            "8c57fffa73224a2beaab1443057099bbf9acc5107a26841430b4853eb7406577": {
                "Name": "apitable-redis-1",
                "EndpointID": "2bf4aac5640c48142ae9eb3ef655ee7476d36980570680877c208cf7772979c5",
                "MacAddress": "02:42:ac:12:00:05",
                "IPv4Address": "172.18.0.5/16",
                "IPv6Address": ""
            },
            "ad1c7693b64bafc97e4f31c2c37f4f068d2a313850a29e19bfa170de5bb5fb38": {
                "Name": "apitable-backend-server-1",
                "EndpointID": "a2de8f75ee5f0c0fbba8972fe2996e3e75d2c28c9c3452808467ba4d8591d54c",
                "MacAddress": "02:42:ac:12:00:06",
                "IPv4Address": "172.18.0.6/16",
                "IPv6Address": ""
            },
            "c0d903e4924a27fb48316e9b695f5c77c2e843df840ab27d4e1ac3d3f00a5608": {
                "Name": "apitable-room-server-1",
                "EndpointID": "78dd62581b3295845da92c9cc167a0dc5908de8dd7c03d5fa81025a93f184393",
                "MacAddress": "02:42:ac:12:00:04",
                "IPv4Address": "172.18.0.4/16",
                "IPv6Address": ""
            },
            "c4e4e588e42fc528e2c4118080b0275645cfa2afc2e81300e4ce9abaddae924e": {
                "Name": "apitable-imageproxy-server-1",
                "EndpointID": "a39b0a6d1cd8e6e48080e8b1bcdf469491fdf486467bd703b0bc7e8f2426258f",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            },
            "cb8e995896933c0aaf4e367d9cbf8a32faab8066db071456cc1074ee65017df7": {
                "Name": "apitable-gateway-1",
                "EndpointID": "4d572fdc4fe06931352b11aeb7c658b479bda60778dce06ca2e6968dae3d2b3c",
                "MacAddress": "02:42:ac:12:00:0d",
                "IPv4Address": "172.18.0.13/16",
                "IPv6Address": ""
            },
            "ed2c3f703da8dad3fdf517a62b86ec6067807d88a9baa54614b6040027d2a3b1": {
                "Name": "apitable-rabbitmq-1",
                "EndpointID": "c292dd523ef2ea6fbe43d4a43232361d92e0e01705544e9738cb2402745e7fc5",
                "MacAddress": "02:42:ac:12:00:0a",
                "IPv4Address": "172.18.0.10/16",
                "IPv6Address": ""
            },
            "f4d292a1dd934f0959106e943b0bf8c1d63d7fac8a11abdb1318bc3457bfd880": {
                "Name": "apitable-mysql-1",
                "EndpointID": "21e32d63c246e51cf465780a78f4ea2e644c5a263deb37c7f1e7ab739d4e82c1",
                "MacAddress": "02:42:ac:12:00:09",
                "IPv4Address": "172.18.0.9/16",
                "IPv6Address": ""
            },
            "fe4e455087f7a79a711bd165211d1e03c1d6128497fcc0bfb76d6fc0e4103ba5": {
                "Name": "apitable-socket-server-1",
                "EndpointID": "23dda5e8e0ad394fe9f9d24c5898b0519af49801d58b600144c9a0d8d175befb",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "apitable",
            "com.docker.compose.project": "apitable",
            "com.docker.compose.version": "2.14.1"
        }
    }
]

And then, here is the result of that docker compose logs mysql command, in-whole:

WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
apitable-mysql-1  | 2022-12-26 23:43:10+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started.
apitable-mysql-1  | 2022-12-26 23:43:10+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
apitable-mysql-1  | 2022-12-26 23:43:10+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started.
apitable-mysql-1  | 2022-12-26 23:43:10+08:00 [Note] [Entrypoint]: Initializing database files
apitable-mysql-1  | 2022-12-26T15:43:10.880851Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
apitable-mysql-1  | 2022-12-26T15:43:10.880871Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.29) initializing of server in progress as process 43
apitable-mysql-1  | 2022-12-26T15:43:10.882594Z 0 [Warning] [MY-010160] [Server] lower_case_table_names was set to 2, even though your the file system '/var/lib/mysql/' is case sensitive.  Now setting lower_case_table_names to 0 to avoid future problems.
apitable-mysql-1  | 2022-12-26T15:43:11.068796Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
apitable-mysql-1  | 2022-12-26T15:45:39.656889Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
apitable-mysql-1  | 2022-12-26T15:59:02.245074Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
apitable-mysql-1  | 2022-12-27 00:24:23+08:00 [Note] [Entrypoint]: Database files initialized
apitable-mysql-1  | 2022-12-27 00:24:23+08:00 [Note] [Entrypoint]: Starting temporary server
apitable-mysql-1  | 2022-12-26T16:24:31.896537Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
apitable-mysql-1  | 2022-12-26T16:24:31.896564Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.29) starting as process 487
apitable-mysql-1  | 2022-12-26T16:24:32.364705Z 0 [Warning] [MY-010160] [Server] lower_case_table_names was set to 2, even though your the file system '/var/lib/mysql/' is case sensitive.  Now setting lower_case_table_names to 0 to avoid future problems.
apitable-mysql-1  | 2022-12-26T16:24:36.966599Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
apitable-mysql-1  | 2022-12-26T16:25:55.196264Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
apitable-mysql-1  | 2022-12-26T16:27:16.606780Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
apitable-mysql-1  | 2022-12-26T16:27:16.606821Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
apitable-mysql-1  | 2022-12-26T16:27:26.341207Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
apitable-mysql-1  | 2022-12-26T16:27:33.311618Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock
apitable-mysql-1  | 2022-12-26T16:27:33.313063Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.29'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  MySQL Community Server - GPL.
apitable-mysql-1  | 2022-12-27 00:27:33+08:00 [Note] [Entrypoint]: Temporary server started.
apitable-mysql-1  | '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
apitable-mysql-1  | 2022-12-27 00:34:25+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started.
apitable-mysql-1  | 2022-12-27 00:34:33+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
apitable-mysql-1  | 2022-12-27 00:34:33+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started.
apitable-mysql-1  | '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
apitable-mysql-1  | 2022-12-26T16:34:34.231544Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
apitable-mysql-1  | 2022-12-26T16:34:34.231565Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.29) starting as process 1
apitable-mysql-1  | 2022-12-26T16:34:34.233095Z 0 [Warning] [MY-010160] [Server] lower_case_table_names was set to 2, even though your the file system '/var/lib/mysql/' is case sensitive.  Now setting lower_case_table_names to 0 to avoid future problems.
apitable-mysql-1  | 2022-12-26T16:34:34.621200Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
apitable-mysql-1  | 2022-12-26T16:34:40.330393Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
apitable-mysql-1  | 2022-12-26T16:34:42.052627Z 0 [System] [MY-010229] [Server] Starting XA crash recovery...
apitable-mysql-1  | 2022-12-26T16:34:42.064910Z 0 [System] [MY-010232] [Server] XA crash recovery finished.
apitable-mysql-1  | 2022-12-26T16:34:42.564638Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
apitable-mysql-1  | 2022-12-26T16:34:42.564682Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
apitable-mysql-1  | 2022-12-26T16:34:42.620121Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
apitable-mysql-1  | 2022-12-26T16:34:42.664337Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.29'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
apitable-mysql-1  | 2022-12-26T16:34:42.664296Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

@RobSeder What's the output of the following command?

$ docker compose exec -it mysql mysql -u root -h mysql -papitable@com mysql -e 'select host from user where user="root";'
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------+
| host      |
+-----------+
| %         |
| localhost |
+-----------+

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

Result is this:

WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1130 (HY000): Host '172.18.0.9' is not allowed to connect to this MySQL server

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

How about docker compose exec -it mysql mysql -u root -h localhost -papitable@com mysql -e 'select host from user where user="root";'?

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

For that, I see this:

WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

If it helps, if I start a bash shell in the apitable-mysql-1 container, I cannot use the username and password. However, if I just run mysql and do a show databases;, it shows this:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.04 sec)

I assume there should be an apitable database maybe? So maybe the database didn't initialize correctly?

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

Do you have .env along side the docker-compose.yaml? Please check the output of docker compose config.

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

Yes, the .env is populated and in the same folder as the YAML. Running docker compose config from that folder:

WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
WARN[0000] The "UID" variable is not set. Defaulting to a blank string.
WARN[0000] The "GID" variable is not set. Defaulting to a blank string.
name: apitable
services:
  backend-server:
    depends_on:
      minio:
        condition: service_started
      mysql:
        condition: service_started
      rabbitmq:
        condition: service_started
      redis:
        condition: service_started
      socket-server:
        condition: service_started
    environment:
      API_PROXY: http://backend-server:8081
      AUTH0_ENABLED: "false"
      AWS_ACCESS_KEY: apitable
      AWS_ACCESS_SECRET: apitable@com
      AWS_ENDPOINT: http://minio:9000
      AWS_REGION: us-east-1
      BACKEND_BASE_URL: http://backend-server:8081/api/v1/
      BACKEND_INFO_URL: http://backend-server:8081/api/v1/client/info
      CALLBACK_DOMAIN: ""
      CORS_ORIGINS: '*'
      DATA_PATH: .
      DATABASE_TABLE_PREFIX: apitable_
      DECORATOR_ENABLED: "false"
      ENV: apitable
      IMAGE_BACKEND_SERVER: apitable/backend-server:latest
      IMAGE_GATEWAY: openresty/openresty:1.21.4.1-3-buster-fat
      IMAGE_IMAGEPROXY_SERVER: apitable/imageproxy-server:latest
      IMAGE_INIT_DATA_MINIO: apitable/init-template-minio:latest
      IMAGE_INIT_DATA_MYSQL: apitable/init-template-mysql:latest
      IMAGE_INIT_DB: apitable/init-db:latest
      IMAGE_MINIO: minio/minio:RELEASE.2021-03-17T02-33-02Z
      IMAGE_MYSQL: mysql:8.0.29
      IMAGE_POLL_POLICY: always
      IMAGE_RABBITMQ: rabbitmq:3-management
      IMAGE_REDIS: redis:5
      IMAGE_REGISTRY: docker.io
      IMAGE_ROOM_SERVER: apitable/room-server:latest
      IMAGE_SOCKET_SERVER: apitable/socket-server:latest
      IMAGE_WEB_SERVER: apitable/web-server:latest
      MAIL_ENABLED: "false"
      MINIO_ACCESS_KEY: apitable
      MINIO_BUCKET: assets
      MINIO_ENDPOINT: http://minio:9000
      MINIO_SECRET_KEY: apitable@com
      MYSQL_DATABASE: apitable
      MYSQL_HOST: mysql
      MYSQL_PASSWORD: apitable@com
      MYSQL_PORT: "3306"
      MYSQL_ROOT_PASSWORD: apitable@com
      MYSQL_USERNAME: root
      NEST_GRPC_ADDRESS: static://room-server:3334
      NEST_GRPC_URL: room-server:3334
      OSS_CACHE_TYPE: minio
      OSS_ENABLED: "true"
      OSS_HOST: /assets
      OSS_TYPE: aws
      PUBLIC_URL: ""
      RABBITMQ_DEFAULT_PASS: fkJifev64y^sbxRl
      RABBITMQ_DEFAULT_USER: apitable-user
      RABBITMQ_HOST: rabbitmq
      RABBITMQ_PASSWORD: fkJifev64y^sbxRl
      RABBITMQ_PORT: "5672"
      RABBITMQ_USERNAME: apitable-user
      RABBITMQ_VHOST: /
      REDIS_DB: "0"
      REDIS_HOST: redis
      REDIS_PASSWORD: apitable@com
      REDIS_PORT: "6379"
      SERVER_DOMAIN: ""
      SMS_ENABLED: "false"
      SOCKET_DOMAIN: http://socket-server:3001/socket
      SOCKET_GRPC_URL: socket-server:3007
      SOCKET_RECONNECTION_ATTEMPTS: "10"
      SOCKET_RECONNECTION_DELAY: "500"
      SOCKET_TIMEOUT: "5000"
      SOCKET_URL: http://socket-server:3002
      SPRINGFOX_ENABLED: "false"
      TEMPLATE_PATH: ./static/web_build/index.html
      TEMPLATE_SPACE: spcNTxlv8Drra
      TIMEZONE: Asia/Singapore
      TZ: Asia/Singapore
      USE_CUSTOM_PUBLIC_FILES: "true"
      VK_ASSETS_LTD_URL: assets
    expose:
    - "8081"
    healthcheck:
      test:
      - CMD-SHELL
      - curl -sS 'http://localhost:8081' || exit 1
      timeout: 10s
      interval: 30s
      retries: 10
    image: docker.io/apitable/backend-server:latest
    networks:
      apitable: null
    ports:
    - mode: ingress
      target: 8081
      published: "8081"
      protocol: tcp
    pull_policy: always
    restart: always
  gateway:
    depends_on:
      backend-server:
        condition: service_started
      imageproxy-server:
        condition: service_started
      minio:
        condition: service_started
      mysql:
        condition: service_started
      room-server:
        condition: service_started
      socket-server:
        condition: service_started
      web-server:
        condition: service_started
    environment:
      TZ: Asia/Singapore
    image: openresty/openresty:1.21.4.1-3-buster-fat
    networks:
      apitable: null
    ports:
    - mode: ingress
      target: 80
      published: "80"
      protocol: tcp
    - mode: ingress
      target: 443
      published: "443"
      protocol: tcp
    pull_policy: always
    restart: always
    volumes:
    - type: bind
      source: /opt/apitable/gateway/conf.d
      target: /etc/nginx/conf.d
      bind:
        create_host_path: true
  imageproxy-server:
    environment:
      BASEURL: http://minio:9000
      TZ: Asia/Singapore
    expose:
    - "8080"
    image: docker.io/apitable/imageproxy-server:latest
    networks:
      apitable: null
    pull_policy: always
    restart: always
  init-data-minio:
    depends_on:
      minio:
        condition: service_healthy
    environment:
      API_PROXY: http://backend-server:8081
      AUTH0_ENABLED: "false"
      AWS_ACCESS_KEY: apitable
      AWS_ACCESS_SECRET: apitable@com
      AWS_ENDPOINT: http://minio:9000
      AWS_REGION: us-east-1
      BACKEND_BASE_URL: http://backend-server:8081/api/v1/
      BACKEND_INFO_URL: http://backend-server:8081/api/v1/client/info
      CALLBACK_DOMAIN: ""
      CORS_ORIGINS: '*'
      DATA_PATH: .
      DATABASE_TABLE_PREFIX: apitable_
      DECORATOR_ENABLED: "false"
      ENV: apitable
      IMAGE_BACKEND_SERVER: apitable/backend-server:latest
      IMAGE_GATEWAY: openresty/openresty:1.21.4.1-3-buster-fat
      IMAGE_IMAGEPROXY_SERVER: apitable/imageproxy-server:latest
      IMAGE_INIT_DATA_MINIO: apitable/init-template-minio:latest
      IMAGE_INIT_DATA_MYSQL: apitable/init-template-mysql:latest
      IMAGE_INIT_DB: apitable/init-db:latest
      IMAGE_MINIO: minio/minio:RELEASE.2021-03-17T02-33-02Z
      IMAGE_MYSQL: mysql:8.0.29
      IMAGE_POLL_POLICY: always
      IMAGE_RABBITMQ: rabbitmq:3-management
      IMAGE_REDIS: redis:5
      IMAGE_REGISTRY: docker.io
      IMAGE_ROOM_SERVER: apitable/room-server:latest
      IMAGE_SOCKET_SERVER: apitable/socket-server:latest
      IMAGE_WEB_SERVER: apitable/web-server:latest
      MAIL_ENABLED: "false"
      MINIO_ACCESS_KEY: apitable
      MINIO_BUCKET: assets
      MINIO_ENDPOINT: http://minio:9000
      MINIO_SECRET_KEY: apitable@com
      MYSQL_DATABASE: apitable
      MYSQL_HOST: mysql
      MYSQL_PASSWORD: apitable@com
      MYSQL_PORT: "3306"
      MYSQL_ROOT_PASSWORD: apitable@com
      MYSQL_USERNAME: root
      NEST_GRPC_ADDRESS: static://room-server:3334
      NEST_GRPC_URL: room-server:3334
      OSS_CACHE_TYPE: minio
      OSS_ENABLED: "true"
      OSS_HOST: /assets
      OSS_TYPE: QNY1
      PUBLIC_URL: ""
      RABBITMQ_DEFAULT_PASS: fkJifev64y^sbxRl
      RABBITMQ_DEFAULT_USER: apitable-user
      RABBITMQ_HOST: rabbitmq
      RABBITMQ_PASSWORD: fkJifev64y^sbxRl
      RABBITMQ_PORT: "5672"
      RABBITMQ_USERNAME: apitable-user
      RABBITMQ_VHOST: /
      REDIS_DB: "0"
      REDIS_HOST: redis
      REDIS_PASSWORD: apitable@com
      REDIS_PORT: "6379"
      SERVER_DOMAIN: ""
      SMS_ENABLED: "false"
      SOCKET_DOMAIN: http://socket-server:3001/socket
      SOCKET_GRPC_URL: socket-server:3007
      SOCKET_RECONNECTION_ATTEMPTS: "10"
      SOCKET_RECONNECTION_DELAY: "500"
      SOCKET_TIMEOUT: "5000"
      SOCKET_URL: http://socket-server:3002
      SPRINGFOX_ENABLED: "false"
      TEMPLATE_PATH: ./static/web_build/index.html
      TEMPLATE_SPACE: spcNTxlv8Drra
      TIMEZONE: Asia/Singapore
      TZ: Asia/Singapore
      USE_CUSTOM_PUBLIC_FILES: "true"
      VK_ASSETS_LTD_URL: assets
    image: docker.io/apitable/init-template-minio:latest
    networks:
      apitable: null
    pull_policy: always
  init-data-mysql:
    command:
    - /bin/bash
    - -c
    - |
      sh run.sh
    depends_on:
      init-db:
        condition: service_completed_successfully
      mysql:
        condition: service_healthy
    environment:
      API_PROXY: http://backend-server:8081
      AUTH0_ENABLED: "false"
      AWS_ACCESS_KEY: apitable
      AWS_ACCESS_SECRET: apitable@com
      AWS_ENDPOINT: http://minio:9000
      AWS_REGION: us-east-1
      BACKEND_BASE_URL: http://backend-server:8081/api/v1/
      BACKEND_INFO_URL: http://backend-server:8081/api/v1/client/info
      CALLBACK_DOMAIN: ""
      CORS_ORIGINS: '*'
      DATA_PATH: .
      DATABASE_TABLE_PREFIX: apitable_
      DECORATOR_ENABLED: "false"
      ENV: apitable
      IMAGE_BACKEND_SERVER: apitable/backend-server:latest
      IMAGE_GATEWAY: openresty/openresty:1.21.4.1-3-buster-fat
      IMAGE_IMAGEPROXY_SERVER: apitable/imageproxy-server:latest
      IMAGE_INIT_DATA_MINIO: apitable/init-template-minio:latest
      IMAGE_INIT_DATA_MYSQL: apitable/init-template-mysql:latest
      IMAGE_INIT_DB: apitable/init-db:latest
      IMAGE_MINIO: minio/minio:RELEASE.2021-03-17T02-33-02Z
      IMAGE_MYSQL: mysql:8.0.29
      IMAGE_POLL_POLICY: always
      IMAGE_RABBITMQ: rabbitmq:3-management
      IMAGE_REDIS: redis:5
      IMAGE_REGISTRY: docker.io
      IMAGE_ROOM_SERVER: apitable/room-server:latest
      IMAGE_SOCKET_SERVER: apitable/socket-server:latest
      IMAGE_WEB_SERVER: apitable/web-server:latest
      MAIL_ENABLED: "false"
      MINIO_ACCESS_KEY: apitable
      MINIO_BUCKET: assets
      MINIO_ENDPOINT: http://minio:9000
      MINIO_SECRET_KEY: apitable@com
      MYSQL_DATABASE: apitable
      MYSQL_HOST: mysql
      MYSQL_PASSWORD: apitable@com
      MYSQL_PORT: "3306"
      MYSQL_ROOT_PASSWORD: apitable@com
      MYSQL_USERNAME: root
      NEST_GRPC_ADDRESS: static://room-server:3334
      NEST_GRPC_URL: room-server:3334
      OSS_CACHE_TYPE: minio
      OSS_ENABLED: "true"
      OSS_HOST: /assets
      OSS_TYPE: QNY1
      PUBLIC_URL: ""
      RABBITMQ_DEFAULT_PASS: fkJifev64y^sbxRl
      RABBITMQ_DEFAULT_USER: apitable-user
      RABBITMQ_HOST: rabbitmq
      RABBITMQ_PASSWORD: fkJifev64y^sbxRl
      RABBITMQ_PORT: "5672"
      RABBITMQ_USERNAME: apitable-user
      RABBITMQ_VHOST: /
      REDIS_DB: "0"
      REDIS_HOST: redis
      REDIS_PASSWORD: apitable@com
      REDIS_PORT: "6379"
      SERVER_DOMAIN: ""
      SMS_ENABLED: "false"
      SOCKET_DOMAIN: http://socket-server:3001/socket
      SOCKET_GRPC_URL: socket-server:3007
      SOCKET_RECONNECTION_ATTEMPTS: "10"
      SOCKET_RECONNECTION_DELAY: "500"
      SOCKET_TIMEOUT: "5000"
      SOCKET_URL: http://socket-server:3002
      SPRINGFOX_ENABLED: "false"
      TEMPLATE_PATH: ./static/web_build/index.html
      TEMPLATE_SPACE: spcNTxlv8Drra
      TIMEZONE: Asia/Singapore
      TZ: Asia/Singapore
      USE_CUSTOM_PUBLIC_FILES: "true"
      VK_ASSETS_LTD_URL: assets
    image: docker.io/apitable/init-template-mysql:latest
    networks:
      apitable: null
    pull_policy: always
  init-db:
    depends_on:
      mysql:
        condition: service_healthy
    environment:
      ACTION: update
      DATABASE_TABLE_PREFIX: apitable_
      DB_HOST: mysql
      DB_NAME: apitable
      DB_PASSWORD: apitable@com
      DB_PORT: "3306"
      DB_USERNAME: root
      TZ: Asia/Singapore
    image: docker.io/apitable/init-db:latest
    networks:
      apitable: null
    pull_policy: always
  minio:
    command:
    - server
    - /data
    environment:
      MINIO_ACCESS_KEY: apitable
      MINIO_SECRET_KEY: apitable@com
      TZ: Asia/Singapore
    expose:
    - "9000"
    healthcheck:
      test:
      - CMD-SHELL
      - curl -sS 'http://localhost:9000' || exit 1
      timeout: 10s
      interval: 30s
      retries: 5
    image: minio/minio:RELEASE.2021-03-17T02-33-02Z
    networks:
      apitable: null
    ports:
    - mode: ingress
      target: 9000
      published: "9000"
      protocol: tcp
    pull_policy: always
    restart: always
    user: ':'
    volumes:
    - type: bind
      source: /opt/apitable/.data/minio/data
      target: /data
      bind:
        create_host_path: true
    - type: bind
      source: /opt/apitable/.data/minio/config
      target: /root/.minio
      bind:
        create_host_path: true
  mysql:
    command:
    - --default-authentication-plugin=mysql_native_password
    - --character-set-server=utf8mb4
    - --collation-server=utf8mb4_general_ci
    - --sql_mode=IGNORE_SPACE,NO_ENGINE_SUBSTITUTION
    - --lower_case_table_names=2
    environment:
      MYSQL_DATABASE: apitable
      MYSQL_ROOT_PASSWORD: apitable@com
      TZ: Asia/Singapore
    expose:
    - "3306"
    healthcheck:
      test:
      - CMD-SHELL
      - mysql apitable -uroot -papitable@com -e 'SELECT 1;'
      timeout: 10s
      interval: 30s
      retries: 10
    image: mysql:8.0.29
    networks:
      apitable: null
    ports:
    - mode: ingress
      target: 3306
      published: "3306"
      protocol: tcp
    pull_policy: always
    restart: always
    user: ':'
    volumes:
    - type: bind
      source: /opt/apitable/.data/mysql
      target: /var/lib/mysql
      bind:
        create_host_path: true
  rabbitmq:
    environment:
      RABBITMQ_DEFAULT_PASS: fkJifev64y^sbxRl
      RABBITMQ_DEFAULT_USER: apitable-user
      RABBITMQ_PASSWORD: fkJifev64y^sbxRl
      RABBITMQ_USERNAME: apitable-user
    expose:
    - "5671"
    - "5672"
    - "15672"
    image: rabbitmq:3-management
    networks:
      apitable: null
    ports:
    - mode: ingress
      target: 5671
      published: "5671"
      protocol: tcp
    - mode: ingress
      target: 5672
      published: "5672"
      protocol: tcp
    - mode: ingress
      target: 15672
      published: "15672"
      protocol: tcp
    pull_policy: always
    restart: always
    user: ':'
    volumes:
    - type: bind
      source: /opt/apitable/.data/rabbitmq
      target: /var/lib/rabbitmq
      bind:
        create_host_path: true
  redis:
    command:
    - redis-server
    - --appendonly
    - "yes"
    - --requirepass
    - apitable@com
    environment:
      TZ: Asia/Singapore
    expose:
    - "6379"
    image: redis:5
    networks:
      apitable: null
    ports:
    - mode: ingress
      target: 6379
      published: "6379"
      protocol: tcp
    pull_policy: always
    restart: always
    user: ':'
    volumes:
    - type: bind
      source: /opt/apitable/.data/redis
      target: /data
      bind:
        create_host_path: true
  room-server:
    depends_on:
      mysql:
        condition: service_started
      redis:
        condition: service_started
    environment:
      API_MAX_MODIFY_RECORD_COUNTS: "30"
      API_PROXY: http://backend-server:8081
      AUTH0_ENABLED: "false"
      AWS_ACCESS_KEY: apitable
      AWS_ACCESS_SECRET: apitable@com
      AWS_ENDPOINT: http://minio:9000
      AWS_REGION: us-east-1
      BACKEND_BASE_URL: http://backend-server:8081/api/v1/
      BACKEND_INFO_URL: http://backend-server:8081/api/v1/client/info
      CALLBACK_DOMAIN: ""
      CORS_ORIGINS: '*'
      DATA_PATH: .
      DATABASE_TABLE_PREFIX: apitable_
      DECORATOR_ENABLED: "false"
      ENV: apitable
      IMAGE_BACKEND_SERVER: apitable/backend-server:latest
      IMAGE_GATEWAY: openresty/openresty:1.21.4.1-3-buster-fat
      IMAGE_IMAGEPROXY_SERVER: apitable/imageproxy-server:latest
      IMAGE_INIT_DATA_MINIO: apitable/init-template-minio:latest
      IMAGE_INIT_DATA_MYSQL: apitable/init-template-mysql:latest
      IMAGE_INIT_DB: apitable/init-db:latest
      IMAGE_MINIO: minio/minio:RELEASE.2021-03-17T02-33-02Z
      IMAGE_MYSQL: mysql:8.0.29
      IMAGE_POLL_POLICY: always
      IMAGE_RABBITMQ: rabbitmq:3-management
      IMAGE_REDIS: redis:5
      IMAGE_REGISTRY: docker.io
      IMAGE_ROOM_SERVER: apitable/room-server:latest
      IMAGE_SOCKET_SERVER: apitable/socket-server:latest
      IMAGE_WEB_SERVER: apitable/web-server:latest
      INSTANCE_MAX_MEMORY: 4096M
      MAIL_ENABLED: "false"
      MINIO_ACCESS_KEY: apitable
      MINIO_BUCKET: assets
      MINIO_ENDPOINT: http://minio:9000
      MINIO_SECRET_KEY: apitable@com
      MYSQL_DATABASE: apitable
      MYSQL_HOST: mysql
      MYSQL_PASSWORD: apitable@com
      MYSQL_PORT: "3306"
      MYSQL_ROOT_PASSWORD: apitable@com
      MYSQL_USERNAME: root
      NEST_GRPC_ADDRESS: static://room-server:3334
      NEST_GRPC_URL: room-server:3334
      NODE_ENV: apitable
      NODE_OPTIONS: --max-old-space-size=2048 --max-http-header-size=80000
      OSS_CACHE_TYPE: minio
      OSS_ENABLED: "true"
      OSS_HOST: /assets
      OSS_TYPE: QNY1
      PUBLIC_URL: ""
      RABBITMQ_DEFAULT_PASS: fkJifev64y^sbxRl
      RABBITMQ_DEFAULT_USER: apitable-user
      RABBITMQ_HOST: rabbitmq
      RABBITMQ_PASSWORD: fkJifev64y^sbxRl
      RABBITMQ_PORT: "5672"
      RABBITMQ_USERNAME: apitable-user
      RABBITMQ_VHOST: /
      REDIS_DB: "0"
      REDIS_HOST: redis
      REDIS_PASSWORD: apitable@com
      REDIS_PORT: "6379"
      SERVER_DOMAIN: ""
      SMS_ENABLED: "false"
      SOCKET_DOMAIN: http://socket-server:3001/socket
      SOCKET_GRPC_URL: socket-server:3007
      SOCKET_RECONNECTION_ATTEMPTS: "10"
      SOCKET_RECONNECTION_DELAY: "500"
      SOCKET_TIMEOUT: "5000"
      SOCKET_URL: http://socket-server:3002
      SPRINGFOX_ENABLED: "false"
      TEMPLATE_PATH: ./static/web_build/index.html
      TEMPLATE_SPACE: spcNTxlv8Drra
      TIMEZONE: Asia/Singapore
      USE_CUSTOM_PUBLIC_FILES: "true"
      VK_ASSETS_LTD_URL: assets
    expose:
    - "3333"
    - "3334"
    image: docker.io/apitable/room-server:latest
    networks:
      apitable: null
    pull_policy: always
    restart: always
  scheduler-server:
    depends_on:
      mysql:
        condition: service_started
      redis:
        condition: service_started
    environment:
      API_MAX_MODIFY_RECORD_COUNTS: "30"
      API_PROXY: http://backend-server:8081
      APPLICATION_NAME: SCHEDULE_SERVER
      AUTH0_ENABLED: "false"
      AWS_ACCESS_KEY: apitable
      AWS_ACCESS_SECRET: apitable@com
      AWS_ENDPOINT: http://minio:9000
      AWS_REGION: us-east-1
      BACKEND_BASE_URL: http://backend-server:8081/api/v1/
      BACKEND_INFO_URL: http://backend-server:8081/api/v1/client/info
      CALLBACK_DOMAIN: ""
      CORS_ORIGINS: '*'
      DATA_PATH: .
      DATABASE_TABLE_PREFIX: apitable_
      DECORATOR_ENABLED: "false"
      ENABLE_SCHED: "true"
      ENV: apitable
      IMAGE_BACKEND_SERVER: apitable/backend-server:latest
      IMAGE_GATEWAY: openresty/openresty:1.21.4.1-3-buster-fat
      IMAGE_IMAGEPROXY_SERVER: apitable/imageproxy-server:latest
      IMAGE_INIT_DATA_MINIO: apitable/init-template-minio:latest
      IMAGE_INIT_DATA_MYSQL: apitable/init-template-mysql:latest
      IMAGE_INIT_DB: apitable/init-db:latest
      IMAGE_MINIO: minio/minio:RELEASE.2021-03-17T02-33-02Z
      IMAGE_MYSQL: mysql:8.0.29
      IMAGE_POLL_POLICY: always
      IMAGE_RABBITMQ: rabbitmq:3-management
      IMAGE_REDIS: redis:5
      IMAGE_REGISTRY: docker.io
      IMAGE_ROOM_SERVER: apitable/room-server:latest
      IMAGE_SOCKET_SERVER: apitable/socket-server:latest
      IMAGE_WEB_SERVER: apitable/web-server:latest
      INSTANCE_MAX_MEMORY: 4096M
      MAIL_ENABLED: "false"
      MINIO_ACCESS_KEY: apitable
      MINIO_BUCKET: assets
      MINIO_ENDPOINT: http://minio:9000
      MINIO_SECRET_KEY: apitable@com
      MYSQL_DATABASE: apitable
      MYSQL_HOST: mysql
      MYSQL_PASSWORD: apitable@com
      MYSQL_PORT: "3306"
      MYSQL_ROOT_PASSWORD: apitable@com
      MYSQL_USERNAME: root
      NEST_GRPC_ADDRESS: static://room-server:3334
      NEST_GRPC_URL: room-server:3334
      NODE_ENV: apitable
      NODE_OPTIONS: --max-old-space-size=2048 --max-http-header-size=80000
      OSS_CACHE_TYPE: minio
      OSS_ENABLED: "true"
      OSS_HOST: /assets
      OSS_TYPE: QNY1
      PUBLIC_URL: ""
      RABBITMQ_DEFAULT_PASS: fkJifev64y^sbxRl
      RABBITMQ_DEFAULT_USER: apitable-user
      RABBITMQ_HOST: rabbitmq
      RABBITMQ_PASSWORD: fkJifev64y^sbxRl
      RABBITMQ_PORT: "5672"
      RABBITMQ_USERNAME: apitable-user
      RABBITMQ_VHOST: /
      REDIS_DB: "0"
      REDIS_HOST: redis
      REDIS_PASSWORD: apitable@com
      REDIS_PORT: "6379"
      SERVER_DOMAIN: ""
      SMS_ENABLED: "false"
      SOCKET_DOMAIN: http://socket-server:3001/socket
      SOCKET_GRPC_URL: socket-server:3007
      SOCKET_RECONNECTION_ATTEMPTS: "10"
      SOCKET_RECONNECTION_DELAY: "500"
      SOCKET_TIMEOUT: "5000"
      SOCKET_URL: http://socket-server:3002
      SPRINGFOX_ENABLED: "false"
      TEMPLATE_PATH: ./static/web_build/index.html
      TEMPLATE_SPACE: spcNTxlv8Drra
      TIMEZONE: Asia/Singapore
      USE_CUSTOM_PUBLIC_FILES: "true"
      VK_ASSETS_LTD_URL: assets
    expose:
    - "3333"
    - "3334"
    image: docker.io/apitable/room-server:latest
    networks:
      apitable: null
    pull_policy: always
    restart: always
  socket-server:
    depends_on:
      rabbitmq:
        condition: service_started
      redis:
        condition: service_started
    environment:
      API_PROXY: http://backend-server:8081
      AUTH0_ENABLED: "false"
      AWS_ACCESS_KEY: apitable
      AWS_ACCESS_SECRET: apitable@com
      AWS_ENDPOINT: http://minio:9000
      AWS_REGION: us-east-1
      BACKEND_BASE_URL: http://backend-server:8081/api/v1/
      BACKEND_INFO_URL: http://backend-server:8081/api/v1/client/info
      CALLBACK_DOMAIN: ""
      CORS_ORIGINS: '*'
      DATA_PATH: .
      DATABASE_TABLE_PREFIX: apitable_
      DECORATOR_ENABLED: "false"
      ENV: apitable
      IMAGE_BACKEND_SERVER: apitable/backend-server:latest
      IMAGE_GATEWAY: openresty/openresty:1.21.4.1-3-buster-fat
      IMAGE_IMAGEPROXY_SERVER: apitable/imageproxy-server:latest
      IMAGE_INIT_DATA_MINIO: apitable/init-template-minio:latest
      IMAGE_INIT_DATA_MYSQL: apitable/init-template-mysql:latest
      IMAGE_INIT_DB: apitable/init-db:latest
      IMAGE_MINIO: minio/minio:RELEASE.2021-03-17T02-33-02Z
      IMAGE_MYSQL: mysql:8.0.29
      IMAGE_POLL_POLICY: always
      IMAGE_RABBITMQ: rabbitmq:3-management
      IMAGE_REDIS: redis:5
      IMAGE_REGISTRY: docker.io
      IMAGE_ROOM_SERVER: apitable/room-server:latest
      IMAGE_SOCKET_SERVER: apitable/socket-server:latest
      IMAGE_WEB_SERVER: apitable/web-server:latest
      MAIL_ENABLED: "false"
      MINIO_ACCESS_KEY: apitable
      MINIO_BUCKET: assets
      MINIO_ENDPOINT: http://minio:9000
      MINIO_SECRET_KEY: apitable@com
      MYSQL_DATABASE: apitable
      MYSQL_HOST: mysql
      MYSQL_PASSWORD: apitable@com
      MYSQL_PORT: "3306"
      MYSQL_ROOT_PASSWORD: apitable@com
      MYSQL_USERNAME: root
      NEST_GRPC_ADDRESS: static://room-server:3334
      NEST_GRPC_URL: room-server:3334
      NODE_MEMORY_RATIO: "80"
      NOTIFICATION_PORT: "3002"
      OSS_CACHE_TYPE: minio
      OSS_ENABLED: "true"
      OSS_HOST: /assets
      OSS_TYPE: QNY1
      PORT: "3001"
      PUBLIC_URL: ""
      RABBITMQ_DEFAULT_PASS: fkJifev64y^sbxRl
      RABBITMQ_DEFAULT_USER: apitable-user
      RABBITMQ_HOST: rabbitmq
      RABBITMQ_PASSWORD: fkJifev64y^sbxRl
      RABBITMQ_PORT: "5672"
      RABBITMQ_USERNAME: apitable-user
      RABBITMQ_VHOST: /
      REDIS_DB: "0"
      REDIS_HOST: redis
      REDIS_PASSWORD: apitable@com
      REDIS_PORT: "6379"
      SERVER_DOMAIN: ""
      SMS_ENABLED: "false"
      SOCKET_DOMAIN: http://socket-server:3001/socket
      SOCKET_GRPC_URL: socket-server:3007
      SOCKET_RECONNECTION_ATTEMPTS: "10"
      SOCKET_RECONNECTION_DELAY: "500"
      SOCKET_TIMEOUT: "5000"
      SOCKET_URL: http://socket-server:3002
      SPRINGFOX_ENABLED: "false"
      SYS_MEMORY_RATIO: "100"
      TEMPLATE_PATH: ./static/web_build/index.html
      TEMPLATE_SPACE: spcNTxlv8Drra
      TIMEZONE: Asia/Singapore
      USE_CUSTOM_PUBLIC_FILES: "true"
      VK_ASSETS_LTD_URL: assets
    expose:
    - "3001"
    - "3002"
    - "3005"
    - "3007"
    image: docker.io/apitable/socket-server:latest
    networks:
      apitable: null
    pull_policy: always
    restart: always
  web-server:
    depends_on:
      backend-server:
        condition: service_healthy
    environment:
      API_PROXY: http://backend-server:8081
      AUTH0_ENABLED: "false"
      AWS_ACCESS_KEY: apitable
      AWS_ACCESS_SECRET: apitable@com
      AWS_ENDPOINT: http://minio:9000
      AWS_REGION: us-east-1
      BACKEND_BASE_URL: http://backend-server:8081/api/v1/
      BACKEND_INFO_URL: http://backend-server:8081/api/v1/client/info
      CALLBACK_DOMAIN: ""
      CORS_ORIGINS: '*'
      DATA_PATH: .
      DATABASE_TABLE_PREFIX: apitable_
      DECORATOR_ENABLED: "false"
      ENV: apitable
      IMAGE_BACKEND_SERVER: apitable/backend-server:latest
      IMAGE_GATEWAY: openresty/openresty:1.21.4.1-3-buster-fat
      IMAGE_IMAGEPROXY_SERVER: apitable/imageproxy-server:latest
      IMAGE_INIT_DATA_MINIO: apitable/init-template-minio:latest
      IMAGE_INIT_DATA_MYSQL: apitable/init-template-mysql:latest
      IMAGE_INIT_DB: apitable/init-db:latest
      IMAGE_MINIO: minio/minio:RELEASE.2021-03-17T02-33-02Z
      IMAGE_MYSQL: mysql:8.0.29
      IMAGE_POLL_POLICY: always
      IMAGE_RABBITMQ: rabbitmq:3-management
      IMAGE_REDIS: redis:5
      IMAGE_REGISTRY: docker.io
      IMAGE_ROOM_SERVER: apitable/room-server:latest
      IMAGE_SOCKET_SERVER: apitable/socket-server:latest
      IMAGE_WEB_SERVER: apitable/web-server:latest
      MAIL_ENABLED: "false"
      MINIO_ACCESS_KEY: apitable
      MINIO_BUCKET: assets
      MINIO_ENDPOINT: http://minio:9000
      MINIO_SECRET_KEY: apitable@com
      MYSQL_DATABASE: apitable
      MYSQL_HOST: mysql
      MYSQL_PASSWORD: apitable@com
      MYSQL_PORT: "3306"
      MYSQL_ROOT_PASSWORD: apitable@com
      MYSQL_USERNAME: root
      NEST_GRPC_ADDRESS: static://room-server:3334
      NEST_GRPC_URL: room-server:3334
      OSS_CACHE_TYPE: minio
      OSS_ENABLED: "true"
      OSS_HOST: /assets
      OSS_TYPE: QNY1
      PUBLIC_URL: ""
      RABBITMQ_DEFAULT_PASS: fkJifev64y^sbxRl
      RABBITMQ_DEFAULT_USER: apitable-user
      RABBITMQ_HOST: rabbitmq
      RABBITMQ_PASSWORD: fkJifev64y^sbxRl
      RABBITMQ_PORT: "5672"
      RABBITMQ_USERNAME: apitable-user
      RABBITMQ_VHOST: /
      REDIS_DB: "0"
      REDIS_HOST: redis
      REDIS_PASSWORD: apitable@com
      REDIS_PORT: "6379"
      SERVER_DOMAIN: ""
      SMS_ENABLED: "false"
      SOCKET_DOMAIN: http://socket-server:3001/socket
      SOCKET_GRPC_URL: socket-server:3007
      SOCKET_RECONNECTION_ATTEMPTS: "10"
      SOCKET_RECONNECTION_DELAY: "500"
      SOCKET_TIMEOUT: "5000"
      SOCKET_URL: http://socket-server:3002
      SPRINGFOX_ENABLED: "false"
      TEMPLATE_PATH: ./static/web_build/index.html
      TEMPLATE_SPACE: spcNTxlv8Drra
      TIMEZONE: Asia/Singapore
      USE_CUSTOM_PUBLIC_FILES: "true"
      VK_ASSETS_LTD_URL: assets
    expose:
    - "8080"
    image: docker.io/apitable/web-server:latest
    networks:
      apitable: null
    pull_policy: always
    restart: always
networks:
  apitable:
    name: apitable_apitable
    driver: bridge

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

If it helps, if I start a bash shell in the apitable-mysql-1 container, I cannot use the username and password. However, if I just run mysql and do a show databases;, it shows this:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.04 sec)

I assume there should be an apitable database maybe? So maybe the database didn't initialize correctly?

What if you execute the following sql? It's peculiar that mysql don't initialize the root password.

use mysql;
select host from user where user='root';

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

I get this:

ERROR 1046 (3D000): No database selected

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

I think maybe you forget the use mysql; line.

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

Sorry, yes - my bad!

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host from user where user='root';
+-----------+
| host      |
+-----------+
| localhost |
+-----------+
1 row in set (0.00 sec)

mysql>

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

I suspect there is something wrong during the first start of mysql, as in my clean setup the mysql will indeed create a database called apitable:

apitable-mysql-1  | 2022-12-27 11:09:37+08:00 [Note] [Entrypoint]: Creating database apitable

Please do the following command to re-initialize the mysql:

sudo rm -fr .data/mysql/
docker compose up -d mysql

# wait for the mysql to start, retry if ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql:3306' (111)
docker compose exec -it mysql mysql -u root -h mysql -papitable@com mysql -e 'select host from user where user="root";'

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

Still same result. For that command, it says access denied for that IP address.

I've rebuilt a VM a few times now and it's been the same every time, starting from that install.sh file. I'm not doing anything out of the ordinary. How do other people on Ubuntu run this? I'm on 22.04 - is that OK? If not, what is a known-good version?

from apitable.

networkhermit avatar networkhermit commented on May 14, 2024

Still same result. For that command, it says access denied for that IP address.

I've rebuilt a VM a few times now and it's been the same every time, starting from that install.sh file. I'm not doing anything out of the ordinary. How do other people on Ubuntu run this? I'm on 22.04 - is that OK? If not, what is a known-good version?

As we use containers to run all the service, it is highly unlikely that it is os related. Let's do a clean setup one more time:

# tear down all running service
docker compose down -v

# make sure no container running
docker ps

# make sure to remove the mysql data directory
sudo rm -fr .data/mysql/

# re-initialize the mysql
docker compose up -d mysql

# wait for the mysql to start, retry if ERROR 2003 (HY000): Can't connect to MySQL server on 'mysql:3306' (111)
docker compose exec -it mysql mysql -u root -h mysql -papitable@com mysql -e 'select host from user where user="root";'

from apitable.

RobSeder avatar RobSeder commented on May 14, 2024

@networkhermit I did clean everything one more time. This time, one thing I did different was to do a docker compose pull first, then docker compose up. Now, everything works! I can log into the website, and I get no mySQL errors. Thanks for the assist

from apitable.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.