This shows you the differences between two versions of the page.
ii:labs:s2:04:tasks:01 [2022/05/18 19:54] radu.ciobanu |
ii:labs:s2:04:tasks:01 [2024/04/11 12:44] (current) radu.ciobanu |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 01. [00p] Running a multi-container application ==== | + | ==== 01. [20p] Running containers ==== |
== Subtasks == | == Subtasks == | ||
- | - based on the sources and the Dockerfile in the //**backend**// folder from the lab archive, build an image with the name **//lab4-api-image//** | + | - pull the **//busybox//** image from the official Docker registry to the local cache |
- | - create a bridge network called **//lab4-db-network//** | + | - run a **//busybox//** container that executes the **//uptime//** command |
- | - create another bridge network called **//lab4-adminer-network//** | + | - run an interactive **//busybox//** container; once you enter it, run the command **//wget google.com//**, then exit |
- | - create a volume named **//lab4-db-volume//** | + | - run a **//busybox//** detached interactive container (daemon); once you have started it, attach to it and run the **//id//** command, then exit |
- | - launch a container //**in the background**// for a database with the following features: | + | - delete all containers and images created at the previous points |
- | - a bind mount will be attached that will map between the **//%%"%%$(pwd)%%"%%/database/init-db.sql//** file on the local machine (this will be the source to the bind mount flag and can be found in the lab archive) and the **///docker-entrypoint-initdb.d/init-db.sql//** file in the container to be run (this will be the destination) | + | |
- | - attach the previously-created **//lab4-db-volume//** volume (as source) to the **///var/lib/postgresql/data//** path in the running container (as destination) | + | |
- | - the container will be part the previously-created **//lab4-db-network//** network | + | |
- | - the following environment variables will be specified (in a **//docker run//** command, this is done as follows: **// docker run -e NAME=value//**): | + | |
- | - variable **//POSTGRES_USER//** with value **//admin//** | + | |
- | - variable **//POSTGRES_PASSWORD//** with value **//admin//** | + | |
- | - variable **//POSTGRES_DB//** with value **//books//** | + | |
- | - the container will be called **//lab4-db//** | + | |
- | - the container will run the **//postgres//** image from the official register | + | |
- | - add the **//lab4-db//** container to the **//lab4-adminer-network//** network | + | |
- | - launch a container //**in the background**// for a database admin with the following features: | + | |
- | - the container will expose port 8080 and map it to 8080 on the local machine | + | |
- | - the container will be called **//lab4-adminer//** | + | |
- | - the container will be part the previously-created **//lab4-adminer-network//** network | + | |
- | - the container will run the **//adminer//** image from the official register | + | |
- | - start a container //**in the background**// based on the previously-created **//lab4-api-image//** image, with the following features: | + | |
- | - the container will be part of the previously-created **//lab4-db-network//** network | + | |
- | - the following environment variables will be specified: | + | |
- | - variable **//PGUSER//** with value **//admin//** | + | |
- | - variable **//PGPASSWORD//** with value **//admin//** | + | |
- | - variable **//PGDATABASE//** with the value **//books//** | + | |
- | - variable **//PGHOST//** with value **//lab4-db//** | + | |
- | - variable **//PGPORT//** with value **//5432//** | + | |
- | - the container will be called **//lab4-api//** | + | |
- | - the container will expose port 80 and map it to port 5555 on the local machine | + | |
- | + | ||
- | == What to upload == | + | |
- | + | ||
- | * a text file containing the executed commands | + |