delimitrou / DeathStarBench

Open-source benchmark suite for cloud microservices
Apache License 2.0
754 stars 421 forks source link

hotelReservation | 'docker compose up -d' failing to build #320

Closed elibakshi closed 7 months ago

elibakshi commented 10 months ago

Hello!

I recently pulled the latest updates for hotelReservation and I am now having issues getting it to run.

When using docker compose, I am getting this error:

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "reservation": executable file not found in $PATH: unknown

Screenshot 2024-01-15 at 4 49 49 PM

Also, in order to get the Google Maps API to load correctly do I just need to provide a personal key at /services/frontend/static/index.html in this line?: <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&callback=initMap" async defer></script>

I would really appreciate any input on this. Thanks so much!

Red-GV commented 10 months ago

Heya @elibakshi, can you try doing ./reservation as the entrypoint for the reservation node?

elibakshi commented 10 months ago

Hello @Red-GV, fixing the entrypoints that were erroring worked like a charm. Thanks for your help!

StreamAzure commented 10 months ago

Heya @elibakshi, can you try doing ./reservation as the entrypoint for the reservation node?

thanks for your fix! It totally saved the day for me

elibakshi commented 10 months ago

Hello again, @Red-GV !

So prefixing all of the entrypoints with "./" fixed my issue initially. But after re-building, I ran into another issue that is (maybe?) related:

Screenshot 2024-01-18 at 6 08 20 PM

From this output it seems that the frontend container can't find the config.json file, and thus never exposes port 5000. Would there need to be a line added to the Dockerfile to COPY it over to the directories of the new entrypoints?

Once again, really appreciate your time and help!

Red-GV commented 10 months ago

Heya @elibakshi, I think it can be done without needing to modify the Dockerfile by modifying the compose file. Haven't tried it as of yet, but this might work:

configs:
      server_config:
        file: ./config.json
        name: config.json
elibakshi commented 10 months ago

Thanks for the suggestion, @Red-GV. I am not too sure if it's an issue just on my end, but that still didn't fix.

The only way I can get somewhere is if I add COPY config.json config.json (as /workspace) and COPY --from=builder /workspace/config.json . (as /) in the Dockerfile.

At first look at the logs for the frontend container it seems that it can now find the ./config.json and all is well:

Screenshot 2024-01-19 at 1 58 10 PM

However, when attempting to actually connect to the website via. browser, I only get a 404 page Not Found response.

Red-GV commented 10 months ago

Hmm, alright. I'll try to play with it and see if I come up with a solution that doesn't involve copying that file into the Dockerfile (I'd be kinda surprised if there wasn't a way to modify that). The reason why I'm not completely all for the "copy into Dockerfile" approach is because in the helm chart deployments, the files are placed in with that deployment style. So I don't see why the file needs to be in there twice so to speak. However, that's purely from a final fix perspective.

The browser issue should be fixed by this guy: https://github.com/delimitrou/DeathStarBench/pull/319

The api does work so you can use the wrk2 client in order to talk to the services via the that.

Red-GV commented 10 months ago

Heya @elibakshi,

I've confirmed on my end that the PR I highlighted last time will solve the 404 issue when you load it from the browser or fire a curl requests against the frontend service. I also think that this change (27f637de6d60198bfcc5c0c35d63d4cdb9d55d44) for the docker-compose.yml should fix things. Doesn't fully play around with podman-compose, but I think it should work fine with the docker cli. Maybe you could give it a spin?

Edit: Have confirmed that docker compose now works as well with the changes.

tuannv1104 commented 8 months ago

Hi @Red-GV

I've tested the hotel reservation service code, and it seems that the frontend only consists of a basic UI displaying a Google map with some pins. Is this the entirety of the UI for the hotel reservation service?

Red-GV commented 8 months ago

Based on what I understand from the codebase, I believe yes, @tuannv1104 .

elibakshi commented 5 months ago

Hi @Red-GV,

My apologies for not replying sooner. Thank you for taking the time to look into and fix my issue, I really appreciate it.

As of now, when trying to run hotelReservation from a fresh repo it fails to launch with docker compose up -d. For context, I am trying to deploy the app on a single Ubuntu AWS EC2 instance.

I may be doing something incorrectly due to my inexperience with configuring docker applications-- but I got it to work on my end doing this:

  1. Removing all of the deploy sections for each service in the docker-compose.yml file.
  2. Removing the ./ from each entrypoint in the docker-compose.yml file.

I wonder if there was a conflict/bug with docker swarm, but as per your comment here, it seems like that should never happen.

Thanks again!

Red-GV commented 5 months ago

Heya @elibakshi ,

My suspicions is that there was a conflict between PRs that was not properly resolved. There appeared to have been some back and forth which removed some of the changes I had made in one of the refactors. This resulted in even more issues. I think one of the current PRs should fix the issue once that gets merged. However, I'm not a maintainer of the codebase though, so I don't know when that merge will occur.