This is a sample NodeJS application for generating images. The user is prompted to write a simple description, which the application will use to generate a corresponding image.
The generation is provided using OpenAI's Images API and DALL·E models.
To get started you will need:
- Docker installed on your local machine.
- Node, version v16.16 or later.
- NPM package manager, version 8.11 or later.
- An IDE for building the application such as Visual Studio
- An account with OpenAI to use their API service. You can get a free account for personal use (with limited API calls).
- An OpenAI API Key is required to access the API needed for image generation. Store it under
.envfile in the format provided under.env.example(assigned underOPENAI_API_KEYvariable)
To get started, first install dependencies:
npm iThen, start the application:
npm run startYou can build your own Docker image as provided below. Since node provide multiarch option, we use buildx to build architectures available for node container image. You may choose to build an individual arch otherwise.
docker buildx build --push --platform linux/arm64/v8,linux/amd64 --tag {your image name}:{your tag} .You can now run the built image using the following command:
docker run -p 3000:3000 --env-file ./.env {your image name}:{your tag}You will then be able to access the application on your browser under the following URL: http://localhost:3000
The image already exists publicly in DockerHub:
docker run -p 3000:3000 --env-file ./.env youngjeong46/chatgpt-image-generator:alpineYou will then be able to access the application on your browser under the following URL: http://localhost:3000
The AWS CDK for Typescript is used to deploy the application to ECS Fargate. Follow the instructions in the README.md.
First, you will need to generate a Base64 encoded string of your OpenAI API key:
echo -n <your API key> | base64Take the output and place it in the secret data inside kubernetes-manifests/apisecret.yaml.
To deploy to an existing Kubernetes cluster, run the following command to apply the manifests:
kubectl apply -f kubernetes-manifests/The application.yaml manifest doesn't expose the service via a load balancer so in order to test do something like this:
kubectl -n chatgpt-apps port-forward svc/image-generator 3000:80 You can access the application via http://localhost:3000.
