smocker icon indicating copy to clipboard operation
smocker copied to clipboard

Init mocks on Docker startup

Open danielpoonwj opened this issue 3 years ago • 3 comments

Purpose

There are a few active discussions on being able to initialize mocks or configure Smocker on startup (https://github.com/Thiht/smocker/issues/217, https://github.com/Thiht/smocker/pull/214) and this is another proposed approach.

This only applies to Docker-based workflows, but the implementation is more straightforward without touching the actual core codebase.

Approach

The main idea is using an Entrypoint script to start the server process in the background, run some configuration code, then restore the process to the foreground. This pattern is described in the official Docker docs. It's also used in practice in postgres, mysql, localstack etc.

Note: bash needs to be used instead of the default bourne shell in alpine because of some issues when attempting to work with background jobs. If you change the Entrypoint shebang to #!/bin/sh, there will be an error.

$ docker-compose up
Starting smocker_smocker_1 ... done
Attaching to smocker_smocker_1
smocker_1  | /opt/docker-entrypoint.sh: set: line 3: can't access tty; job control turned off
smocker_1  | time="2021-10-03T17:46:24Z" level=info msg="Setting log level" log-level=warning
smocker_1  | /opt/docker-entrypoint.sh: uploading /docker-entrypoint-init.d/helloworld.yml
smocker_1  | /opt/docker-entrypoint.sh: fg: line 58: job %1 not created under job control
smocker_smocker_1 exited with code 2

danielpoonwj avatar Oct 03 '21 17:10 danielpoonwj

This looks great. Any word on a review and merge status?

steveoh avatar Feb 07 '23 21:02 steveoh

Any updates on this or why it isn't considered?

joarobles avatar May 11 '23 17:05 joarobles