37 lines
2.7 KiB
Markdown
37 lines
2.7 KiB
Markdown
# Activity Block Wrapper
|
||
## Overview
|
||
This project includes a setup to wrap a user-defined `block.py` file into an activity block that runs within a managed worker environment. The setup uses `entrypoint.py` as a wrapper to dynamically load and execute the logic defined in `block.py` and make it available as an activity block.
|
||
This README explains the purpose and functionality of `entrypoint.py`, the `activity_block_wrapper` base image, and how it all comes together within the Dockerfile to create a production-ready, deployable worker.
|
||
|
||
## Files
|
||
### 1. `entrypoint.py`
|
||
`entrypoint.py` is the main entry script for the activity block wrapper. It provides the following functionality:
|
||
- **Dynamic Loading**: Imports `block.py` and retrieves its `__main__` function dynamically. This function is wrapped and managed within the worker environment.
|
||
- **Logging and Error Handling**: Includes logging and error handling to ensure issues are properly recorded and managed, which is essential for production environments.
|
||
- **Worker Management**: Starts a worker instance that manages the execution of the activity block, making the `block.py` logic available as an activity in the specified task queue and namespace.
|
||
|
||
#### Configuration
|
||
- `TASK_QUEUE`: The task queue name for the worker. Set via environment variable.
|
||
- `NAMESPACE`: The namespace for the worker to operate within. Set via environment variable.
|
||
|
||
#### Example Usage
|
||
To configure and run `entrypoint.py` in your environment:
|
||
1. Set the `TASK_QUEUE` and `NAMESPACE` environment variables.
|
||
2. Run `entrypoint.py`, and it will automatically wrap `block.py` as an activity block within the worker.
|
||
|
||
### 2. Dockerfile
|
||
The Dockerfile is structured to create an image that:
|
||
- Uses `activity_block_wrapper` as a base, which includes `entrypoint.py` and pre-installed dependencies.
|
||
- Copies the user’s `block.py` and other project-specific files into the container.
|
||
- Creates a symbolic link to `entrypoint.py` as `block.py`, making it appear as if `block.py` is the entry point, while actually running `entrypoint.py` to manage the activity block.
|
||
|
||
#### Key Dockerfile Commands
|
||
- **FROM activity_block_wrapper:latest**: Builds on top of the `activity_block_wrapper` image, which includes the necessary runtime environment and `entrypoint.py`.
|
||
- **COPY**: Copies the user’s `block.py` and other related files into the container.
|
||
- **RUN ln -s /app/entrypoint.py /app/block.py**: Creates a symbolic link from `entrypoint.py` to `block.py`, allowing `entrypoint.py` to manage the activity block while maintaining `block.py` as the visible entry point.
|
||
|
||
### Example Usage with Docker
|
||
1. **Build the Base Image**:
|
||
```bash
|
||
docker build -f Dockerfile.base -t activity_block_wrapper:latest .
|