Prerequisites

Before deploying the helixml/base-images project to production, ensure that the following prerequisites are met:

  • Python 3.x is installed on the production server.
  • Docker is installed and running on the production server.
  • Access to the relevant Docker registry and permissions to push images.

Step 1: Pull the Base Images

Start by pulling the necessary base images from the Docker registry if they are not already available locally. Execute the following command in the terminal:

docker pull helixml/base-image:latest

This command retrieves the latest version of the base image.

Step 2: Create Dockerfile

Create a Dockerfile in the root directory of your production deployment. This file will be used to define the environment and application dependencies. An example Dockerfile is presented below:

FROM helixml/base-image:latest

# Set environment variables
ENV ENV_VAR_NAME value

# Copy application code
COPY ./app /app

# Set the working directory
WORKDIR /app

# Install dependencies
RUN pip install -r requirements.txt

# Expose the application port
EXPOSE 80

# Define the command to run the application
CMD ["python", "app.py"]

Adjust the ENV_VAR_NAME and application path as needed.

Step 3: Build the Docker Image

Build the Docker image using the Dockerfile created in the previous step. Execute the following command:

docker build -t myapp:1.0 .

Replace myapp with the desired name of the application. The tag 1.0 can be updated to reflect the version of the application.

Step 4: Push the Docker Image to Registry

After building the image, push it to your Docker registry for production deployment. Use the following command:

docker tag myapp:1.0 mydockerregistry/myapp:1.0

docker push mydockerregistry/myapp:1.0

Make sure to replace mydockerregistry with the actual address of your Docker registry.

Step 5: Deploying the Application

On your production server, pull the image from the Docker registry:

docker pull mydockerregistry/myapp:1.0

Then, run the Docker container using the pulled image:

docker run -d -p 80:80 --name myapp_container mydockerregistry/myapp:1.0

This command runs the application in detached mode and maps port 80 of the container to port 80 on the host.

Step 6: Verification

To verify if the application is running properly, check the running containers:

docker ps

You should see myapp_container in the list of running containers. Additionally, check the logs for any errors:

docker logs myapp_container

You can also test the application by navigating to http://<your-production-server-IP> in a web browser.

Step 7: Updating the Application

When deploying updates, repeat the steps from Step 2 through Step 5, ensuring to use a new version tag for the image:

  1. Update the application code.
  2. Build the new Docker image.
  3. Push the updated image to the Docker registry.
  4. Pull the new image on the production server.
  5. Transition to the new image using:
docker stop myapp_container
docker rm myapp_container
docker run -d -p 80:80 --name myapp_container mydockerregistry/myapp:new_version

Replace new_version with the updated version tag.

Conclusion

Follow these steps to effectively deploy the helixml/base-images project in a production environment. Continuous integration and deployment practices can further enhance the deployment process. Always ensure that the configuration and environment settings align with the production requirements for optimal application performance.

Source: Information derived from existing project guidelines within the helixml/base-images repository.