Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert a docker run command into a docker-compose

I want to run this in my Docker Swarm:

docker run --rm -it progrium/stress --cpu 2 --io 1 --vm 2 --vm-bytes 128M --timeout 10s 

so I need a Docker-compose.yml

How should I use this docker image in a docker compose and pass those params ?

like image 537
Juliatzin Avatar asked Apr 23 '18 15:04

Juliatzin


People also ask

Is docker compose up the same as docker run?

The key difference between docker run versus docker-compose is that docker run is entirely command line based, while docker-compose reads configuration data from a YAML file. The second major difference is that docker run can only start one container at a time, while docker-compose will configure and run multiple.

Can we create docker image from running container?

The docker commit command is used to take a container and produce a new image from it. It works with either stopped or running containers. This creates an image from the container named example-container . You can also identify the container by ID if you prefer.

Can docker compose run without Dockerfile?

Thanks in advance. You re right, Dockerfile is not necessary. Docker Compose uses YAML file, typically named docker-compose. yml to define what your mutliple-container application should look like.


2 Answers

Converting a docker run command into a compose file

Composerize will help you convert run command to a compose partially.

To understand it better I have described the components of the docker-compose.yml here.

image - image used to run the container

name - name of the service or container

command - command you want to run after the container is up

volumes - volume(s) you want to mount

Converting the run command from above to docker-compose:

version: "2/3/3.3/3.6" # based on the docker-compose version you use services:    stress: # Service name, user defined       image: progrium/stress        command: '--cpu 2 --io 1 --vm 2 --vm-bytes 128M --timeout 10s' 

First two lines are common for any docker-compose file.

In docker-compose, the command allows the image to accept additional commands or options.

docker-compose.yml

version: "2" services:    stress:       image: progrium/stress       command: '--cpu 2 --io 1 --vm 2 --vm-bytes 128M --timeout 10s' 

Compose the file with docker-compose as:

docker-compose up -d 
  • Multiple commands to the compose file:

    command: bash -c "cd app/ && npm start"

  • Multi-line command to compose file:

    command: >   bash -c "cd app/    && npm start" 

<embed src="https://composerize.com/"  width="100%" height="700">
like image 138
Jinna Balu Avatar answered Oct 04 '22 10:10

Jinna Balu


Just use this nifty little tool as a helper: https://composerize.com/

Or follow the manual steps highlighted in the previous answers...

like image 38
Thiago Silva Avatar answered Oct 04 '22 09:10

Thiago Silva