You can open this sample in the Dev Environments feature of Docker Desktop version 4.12 or later.
Open in Docker Dev Environments
Project structure:
|___.docker | |__scripts | | |__... | |__ docker-compose.dev.yml | |__ docker-compose.prod.yml ├── backend │ ├── docker/Dockerfile │ └── ... └── README.md Database service:
database: image: postgres:13 restart: unless-stopped container_name: bookmark-api-db ports: - '5433:5432' ... API service:
services: backend: build: backend ports: - 8082:8081 db: image: postgres ... The compose file defines an application with two services api and database. When deploying the application, docker compose maps port 8081 of the backend service container to port 8081 of the host machine as specified in the file. Make sure port 8081 on the host is not already being in use.
🚨 create environment file and add permission to execute scripts
$ cp .docker/.env.example .docker/.env && chmod -R +x .docker/scriptsdocker-compose for development
- starting containers
.docker/scripts/develop up -d --build - removing containers
.docker/scripts/develop down - show backend logs
.docker/scripts/develop logs -f api docker-compose for production
- starting containers
.docker/scripts/production up -d --build - removing containers
.docker/scripts/production down Listing containers must show two containers running and the port mapping as below:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b0714f8522e2 maven:3.8.5-openjdk-17 "mvn clean spring-bo…" 50 minutes ago Up 50 minutes 0.0.0.0:8082->8081/tcp bookmark-api-dev 03499e065a8e postgres:13 "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:5433->5432/tcp bookmark-api-db Listing the currently created Docker compose
$ docker compose ls NAME STATUS CONFIG FILES bookmark-app running(2) C:\Users\<name.\<path>\<path>\<project>\.docker\docker-compose.dev.yml After the application starts, navigate to http://localhost:8082/api in your web browse OR just run:
$ curl localhost:8082/api % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 50 0 50 0 0 6930 0 --:--:-- --:--:-- --:--:-- 8333{"message": "Hasta la vista, baby. - Terminator 2" } If the application was fired up but is not running. check it logs:
$ docker logs <container_name> Also, check the network defined in the docker.compose file
$ docker network inspect bookmark-app_bookmark-api-net [{"Name": "bookmark-app_bookmark-api-net", "Id": "ca6c3a94b62c1c8e0c2a55897d7c893f56383e6d4bae3eb2900d1ffa83d24649", "Created": "2023-03-29T04:02:29.563626808Z", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM":{"Driver": "default", "Options": null, "Config": [{"Subnet": "172.20.0.0/16", "Gateway": "172.20.0.1" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom":{"Network": "" }, "ConfigOnly": false, "Containers":{"2f8c7493479d386b64108008f833bf2ccc2df1d66b0175e98fa1de10804a6159":{"Name": "bookmark-api-dev", "EndpointID": "13e1ab0baca0520b0eb4e6fb5505daa8b9b64f2f1de8ce7328de2d294c582e28", "MacAddress": "02:42:ac:14:00:02", "IPv4Address": "172.20.0.2/16", "IPv6Address": "" }, "bd7277d736e607b5f5ac4be681c437042ba930b2d1fbbabd93cb13db3cc8b949":{"Name": "bookmark-api-db", "EndpointID": "692133c5a4307dd7f23ce65196344af1fcb5d7dfbe38274ce227cb23ad8db87c", "MacAddress": "02:42:ac:14:00:03", "IPv4Address": "172.20.0.3/16", "IPv6Address": "" } }, "Options":{}, "Labels":{"com.docker.compose.network": "bookmark-api-net", "com.docker.compose.project": "bookmark-app", "com.docker.compose.version": "2.15.1" } } ] You should verify that there are two containers bookmark-api-dev and bookmark-api-db are appeared in the Containers field.