An Interest In:
Web News this Week
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
- April 19, 2024
- April 18, 2024
- April 17, 2024
10 docker-compose and docker commands that are useful for active development
Sure you might need other ones but I've found over time that these are the only ones I need or use on a regular basis, and I use Docker
and docker-compose
regularly for various projects.
1. terminal into the docker container
docker exec -it :container_id bash
You may need to terminal into a container to do things like run tests or apply migrations.
[13:54:41] (master) selfies docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb5e87b73f6f6 selfies_web "python manage.py ru" 2 seconds ago Up 1 second 0.0.0.0:8000->8000/tcp selfies_web_1d8e636ad4805 postgres:10.1-alpine "docker-entrypoint.s" 3 seconds ago Up 2 seconds 0.0.0.0:5432->5432/tcp selfies_db_1aeb5cba5a482 redis:latest "docker-entrypoint.s" 3 seconds ago Up 2 seconds 6379/tcp selfies_redis_1[13:54:43] (master) selfies docker exec -it b5e87b73f6f6 bashroot@b5e87b73f6f6:/selfies# python manage.py makemigrationsNo changes detectedroot@b5e87b73f6f6:/selfies#
2. run the docker container in debug mode
docker-compose run --service-ports web
If you want to debug your server, this command will let you do it. Otherwise you may get an error if you put a debugger in your code.
[13:56:59] (master) selfies docker-compose run --service-ports webCreating network "selfies_default" with the default driverCreating selfies_redis_1 ... doneCreating selfies_db_1 ... donePerforming system checks...System check identified no issues (0 silenced).July 24, 2019 - 17:57:11Django version 2.1.7, using settings 'selfies.settings'Starting ASGI/Channels version 2.2.0 development server at http://0.0.0.0:8000/Quit the server with CONTROL-C.Performing system checks...System check identified no issues (0 silenced).July 24, 2019 - 18:12:29Django version 2.1.7, using settings 'selfies.settings'Starting ASGI/Channels version 2.2.0 development server at http://0.0.0.0:8000/Quit the server with CONTROL-C.HTTP OPTIONS /app/users/ 200 [0.01, 172.25.0.1:60046]> /selfies/app/views/account_views.py(48)post()-> try:(Pdb)
3. build the docker container
docker-compose build
This runs everything in the Dockerfile.
I usually run this the first time to build the project, and after that only if I add dependencies to my requirements.txt
file or change anything within my Dockerfile.
[18:59:42] (master) selfies// docker-compose builddb uses an image, skippingredis uses an image, skippingBuilding webStep 1/7 : FROM python:3.6-stretch ---> 9167692c277eStep 2/7 : ENV PYTHONUNBUFFERED 1 ---> Using cache ---> 0533dfe1c141Step 3/7 : ENV REDIS_HOST "redis" ---> Using cache ---> c01adb015773Step 4/7 : RUN mkdir /selfies ---> Using cache ---> e60377d4e9eeStep 5/7 : WORKDIR /selfies ---> Using cache ---> 9018fb3984b0Step 6/7 : ADD . /selfies/ ---> Using cache ---> 8c6d291d99a7Step 7/7 : RUN pip install -r requirements.txt ---> Using cache ---> 7caa2f3bf2acSuccessfully built 7caa2f3bf2acSuccessfully tagged selfies_web:latest
4. start the docker container
docker-compose up
This will run your container/s in the terminal and will show the server output
[13:39:32] (master) selfies docker-compose upCreating network "selfies_default" with the default driverCreating selfies_redis_1 ... doneCreating selfies_db_1 ... doneCreating selfies_web_1 ... doneAttaching to selfies_db_1, selfies_redis_1, selfies_web_1db_1 | 2019-07-24 17:40:36.069 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432db_1 | 2019-07-24 17:40:36.069 UTC [1] LOG: listening on IPv6 address "::", port 5432redis_1 | 1:C 24 Jul 2019 17:40:36.085 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Ooredis_1 | 1:C 24 Jul 2019 17:40:36.085 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=1, just startedredis_1 | 1:C 24 Jul 2019 17:40:36.085 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.confredis_1 | 1:M 24 Jul 2019 17:40:36.086 * Running mode=standalone, port=6379.redis_1 | 1:M 24 Jul 2019 17:40:36.086 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.redis_1 | 1:M 24 Jul 2019 17:40:36.086 # Server initializedredis_1 | 1:M 24 Jul 2019 17:40:36.086 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.redis_1 | 1:M 24 Jul 2019 17:40:36.086 * Ready to accept connectionsdb_1 | 2019-07-24 17:40:36.072 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"db_1 | 2019-07-24 17:40:36.086 UTC [18] LOG: database system was shut down at 2019-07-24 17:39:28 UTCdb_1 | 2019-07-24 17:40:36.090 UTC [1] LOG: database system is ready to accept connectionsweb_1 | Performing system checks...web_1 | web_1 | System check identified no issues (0 silenced).web_1 | July 24, 2019 - 17:40:38web_1 | Django version 2.1.7, using settings 'selfies.settings'web_1 | Starting ASGI/Channels version 2.2.0 development server at http://0.0.0.0:8000/web_1 | Quit the server with CONTROL-C.
5. start the docker container in the background
docker-compose up -d
This will run the container but in the background so you can continue to type in the terminal. I usually run it this way if I don't really need to see what the server is returning.
[13:31:03] (master) selfies docker-compose up -dCreating network "selfies_default" with the default driverCreating selfies_db_1 ... doneCreating selfies_redis_1 ... doneCreating selfies_web_1 ... done
6. see all of the docker containers currently running
List of active docker containers which is useful for the CONTAINER ID
and to know what you have running.
docker ps
[13:31:10] (master) selfies docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa2b93a900c36 selfies_web "python manage.py ru" 2 seconds ago Up 1 second 0.0.0.0:8000->8000/tcp selfies_web_12d39a1161aa2 postgres:10.1-alpine "docker-entrypoint.s" 4 seconds ago Up 2 seconds 0.0.0.0:5432->5432/tcp selfies_db_162a6f364860e redis:latest "docker-entrypoint.s" 4 seconds ago Up 2 seconds 6379/tcp selfies_redis_1
7. remove all docker containers in the repository
docker-compose down
I almost always follow this command with docker ps
to make sure the containers were successfully removed, out of habit.
[13:37:20] (master) selfies docker-compose downStopping selfies_web_1 ... doneStopping selfies_db_1 ... doneStopping selfies_redis_1 ... doneRemoving selfies_web_1 ... doneRemoving selfies_db_1 ... doneRemoving selfies_redis_1 ... doneRemoving network selfies_default
8. remove a specific docker container
docker kill :container_id
The container id is the leftmost column when doing docker ps.
I sometimes do this if I need to remove a specific container that I'm not using.
[13:51:43] (master) selfies docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES274b1605ca94 selfies_web "python manage.py ru" 11 minutes ago Up 1 second 0.0.0.0:8000->8000/tcp selfies_web_1a641f449edfc postgres:10.1-alpine "docker-entrypoint.s" 11 minutes ago Up 2 seconds 0.0.0.0:5432->5432/tcp selfies_db_161b08693e242 redis:latest "docker-entrypoint.s" 11 minutes ago Up 2 seconds 6379/tcp selfies_redis_1[13:51:44] (master) selfies docker kill 274b1605ca94274b1605ca94
9. view all of the docker images
You can see all your builds by running this. For me these are either official "images" like redis or python or old builds of my projects. I only occasionally use this, it's not really a part of my daily development.
docker images
[18:28:17] (master) selfies// docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEselfies_web latest 4869d063569e 7 days ago 1.32GBpython 3.6-stretch 9167692c277e 11 days ago 936MBredis latest 598a6f110d01 12 days ago 118MB<none> <none> 9c4676224e86 2 months ago 1e+03MB<none> <none> 6c925f68c3a9 2 months ago 929MB<none> <none> b44ef8ff52f4 2 months ago 929MB<none> <none> 903b976cd478 2 months ago 1.47GB<none> <none> f7009c6f0868 2 months ago 1.49GB<none> <none> 52750c0c3926 2 months ago 1.48GB<none> <none> 1c509a380925 2 months ago 1.44GB
10. clean out any images, builds, etc., that might be hanging
docker system prune
I only occasionally use this, it's not really a part of my daily development.
[18:18:35] (master) selfies// docker system pruneWARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all build cacheAre you sure you want to continue? [y/N] yDeleted Containers:1f570bbf6828dadfdaa97655165943fd0b93ce6c185df2531f61a82982ec24f240f79091bc943c86f5f3ab7bc9d484ac9b576effc686a8a0fdb0031a465b16b4f3399b0cd4f8c30159b15e1a2027aadeeaf9006efa4b759e4e3586d4589a0004e0d18cddd40241de3d3b03d695afe667819c884a12fd36465c4c6d584df5aaa6b7757cef15b49ecfe58ac6a8de3f8fcae91c71d793b7942955ccaf7c266bff92a8fc94cd1af14f27b0ae22c1728b33fc8cef4090aa7deef1c2549c33755ed1144de12efd1f88b9ee3541049c9b6fb3df5b1ade3b5787f888f5cf05f2e02c3cec21d97261412949c06a4fcfb9846a6dee22f92e6a928cd6fb715ee81924917d43073ca414e8c79e593c82f46f565adbae92a159994699dbbd0fb9df8044b3b1bbb62f36a4a182479d25c2251e8d90fb7d2b612f31a03e943e83882ab436981879456510a02d7ad5137dcb907484b2c8d9e07f51946be1103d294e4e253bc0e664effee0d0a9afa74825f8f820bd363ebe1b7b54948aed38d57e84342482c367fd5d930ece03ed8a2c2cb9178b81c9b42ef4c7397ef90d29b040ed3b1220f8ba27a6ccf4f68831a19ab7381354f5643f3afd94cfbe0d066ff9ce4b248b90139a631a65f709f9b9c7d9749a04e88d3c4d18539a495160e143337c25025b10f9b24ce98fbb022cb920dd4550751fdb735c1f73ae1dd6a049b9855bd77db1a2cbb3d118cb48bcb6428d4a9d5ca2f4b9c0a2fbedb3ef98c1d1fe6788029d7abea8efe997d0ee4625df7d107bc543318b1b45701f17720c41c7bb9614183e2cca0e26c75fafd4e2df31a0b84657ce1a0450c9cc8d8caa56ede9b10cddbfa6b6f55f6b50212dae9eab339a84817b590cceb345d66290fa7f0fd7e347bffda322eb60400e14cdd7e40ca412e1b091ddf640513ecf3f5f8bfd51cbc826e59b4901b1a0e213ceeeb46b3aa52660a7080949543654e6436b0c050c865ef6cbed83f43bba8cc36c96d28cffed031a8bdd836670401b74eb52fa8f03c1dca83b73b8d0ba8530ec9c89d36c6ee1f8fbc9d0c542d14d6d5b924817abf47a656941062eed95e607f658d212388ac7f15468306e306977661169e8aacdeeaba2fea4fc9cf7ebbb9e4671963edbfe38d4578ba1338a0d03ed94f81664b202f969acf72d38ceeded5fed4838aa870e8962e6a1c8c0e679dad8d25f5ad08824bfd45df150d148ae7097baabab59a1cd1fcf0a14e1d8f45d03f1787b218233a118af59f604ad890cc64dc15375b62e20d2660f8347f5f7355122f9fb528a1b603b1e58ceb7d7b81174041029d7238e6d81f522f8c98b4d2e478bb304aec7a00892b8339bf1b4a0483e7040Deleted Networks:selfiesh_default
Original Link: https://dev.to/aduranil/10-docker-compose-and-docker-commands-that-are-useful-for-active-development-22f9
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To