Skip to content

ApiLogicServer/docker-compose-nw-postgres

Repository files navigation

Postgres ApiLogicProject using Docker and docker-compose

This project illustrates using API Logic Server with Docker and docker-compose. The objective is to provide a simple way to explore using docker with API Logic Server on your local machine. These are not production procedures - they are designed for simple local machine operation.

The git project is an uncustomized API Logic Project created from the postgres Northwind database image. This database is provided in a docker container:

docker run -d --name postgresql-container --net dev-network -p 5432:5432 -e PGDATA=/pgdata -e POSTGRES_PASSWORD=p apilogicserver/postgres:latest

This doc explains:

  • I. Running the git project as an image - acquire pre-created project from git, and run

  • II. Running the git project as a docker-compose - build, deploy and run

  • III. Recreating the project - how to rebuild the project from scratch

  • IV. Status, Open Issues (eg, not working on windows)

We presume you have Python, pip installed ApiLogicServer (version >= 09.01.25 - preview here), and docker.

 

 

General Setup

Stop the docker-compose container, if it is running.

 

1. Install API Logic Server

Install the current (or preview). Use the ApiLogicServer command to verify the version note above.

 

2. Create the postgres database container:

The image contains not only Postgres, but also the Northwind and authdb databases.

docker run -d --name postgresql-container --net dev-network -p 5432:5432 -e PGDATA=/pgdata -e POSTGRES_PASSWORD=p apilogicserver/postgres:latest

 

3. Install this project from git

Follow this procedure to obtain the pre-created project from git.

# git clone https://github.com/ApiLogicServer/docker-compose-nw-postgres.git
# cd docker-compose-nw-postgres

 

4. Verify local operation

Verify proper installation:

  1. Open the project in VSCode

  2. Establish your (possibly preview) virtual environment

  3. Press F5 to run the server

  4. Run the Admin App, and Swagger

 

Obtain the web app

The git project does not store these files, so you must obtain them:

pushd devops/docker-compose
sh install-webapp.sh
popd

 

 

I. Running the git project as image

 

1. Build the Image

For preview versions, verify devops/docker-image/build_image.dockerfile is using apilogicserver/api_logic_server_x (note the _x).

 

cd <project>
sh devops/docker-image/build_image.sh .

 

2. Start the database

First, if you haven't already done so, start the database:

docker run -d --name postgresql-container --net dev-network -p 5432:5432 -e PGDATA=/pgdata -e POSTGRES_PASSWORD=p apilogicserver/postgres:latest

 

3. Configure the server

When run from a container, the database uri using localhost (from ApiLogicServer create) does not work. Observe the devops/docker-image/env.list:

APILOGICPROJECT_SQLALCHEMY_DATABASE_URI=postgresql://postgres:p@postgresql-container/postgres
APILOGICPROJECT_SQLALCHEMY_DATABASE_URI_AUTHENTICATION=postgresql://postgres:p@postgresql-container/authdb

 

4. Start the Server

Use the pre-created command line script:

sh devops/docker-image/run_image.sh

 

5. Run the App

Run the Admin App, and Swagger.

You can also run the Authentication Administration App to define users and roles (though not required).

 

 

II. Running the git project as docker-compose

 

1. Stop the docker database

The procedure below will spin up another database container.

Ensure you are not already running the API Logic Server postgres database in a docker container. If it's running, you will see port conflicts.

 

2. Build, Deploy and Run

The following will build, deploy and start the container stack locally:

# cd ./devops/docker-compose/
# sh docker-compose.sh     # windows: .\docker-compose.ps

Then, in your browser, open localhost.

 

Manual Port configuration

If that fails (e.g., windows), enter your port into devops/docker-image/docker-compose.yml.

Then, use the following to build, deploy and start the default container stack locally:

# cd postgres-docker-compose  # <project-root>
# docker-compose -f ./devops/docker-compose/docker-compose.yml up

Then, in your browser, open localhost.

 

3. Add Security

The postgres database contains authdb. To activate security, update devops/docker-compose/docker-compose.yml:

  1. Set - SECURITY_ENABLED=true

  2. Under api-logic-server-environment, observe:

- APILOGICPROJECT_SQLALCHEMY_DATABASE_URI_AUTHENTICATION=postgresql://postgres:p@nw_postgres/authdb

 

 

III. Recreating the Project

After verifying project operation using the instructions above, you may wish to re-create the project from scratch.

Re-create this project as follows:

 

0. Setup

Stop the docker-compose container, if it is running.

 

1. Start the postgres database container:

docker run -d --name postgresql-container --net dev-network -p 5432:5432 -e PGDATA=/pgdata -e POSTGRES_PASSWORD=p apilogicserver/postgres:latest

Verify it looks like this:

Authdb

 

2. Create the Project:

Create the project with API Logic Server in the directory indicted below, as a sibling of this project obtained from github:

cd <parent folder to this project>
ApiLogicServer create --project_name=rebuild-docker-compose-nw-postgres --db_url=postgresql://postgres:p@localhost/postgres

Project Structure

 

3. Verify proper operation

The project should be ready to run without customization:

  1. Open the project in VSCode

  2. Establish your (possibly preview) virtual environment

  3. Press F5 to run the server

  4. Run the Admin App, and Swagger

 

4. Add Security - using the terminal window inside VSCode:

Stop the server.

Using the terminal window inside VSCode:

ApiLogicServer add-auth --project_name=. --db_url=postgresql://postgres:p@localhost/authdb

Re-run the project (F5), observe you need to login. Observe further that u1 does not work - you need to use admin.

 

5. Obtain the web app

The git project does not store these files, so you must obtain them:

pushd devops/docker-compose
sh install-webapp.sh
popd

You have now recreated the git project. You should be able to execute the instructions at the top of this page.

 

 

IV. Status, Open Issues

This procedure has been validated on several computers, in all aspects described above.

 

Production Considerations

As noted above, this project is provided to explore docker / API Logic Server in a simple, local environment. Production considerations:

  1. Instead of building the app image, you might prefer to built it separately and use that in the docker-compose, e.g.
services:
    api_logic_project:
        container_name: apilogicserver/docker-compose-nw
        network_mode: dev-network
        env_file:
            - 'env.list'
  1. Database data is in the image to simplify installs. You would typically use volumes for data in production.

 

Open Issues

We are investigating the following improvements (comments requested):  

1. Not running under windows

The server builds, starts, and connects to the database. The web app, however, fails to start in the browser.

 

2. www/admin-app

This is now obtained through an install step. Please report issues / reactions.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published