How to don't start entrypoint command on "docker-compose up"?
-
I have multiple Docker containers in a project and I use
docker-compose up -d
to start containers.This is my
docker-compose.yml
file:version: "3" services: httpd: image: 'nginx:stable-alpine' ports: - '80:80' volumes: - ./laravel:/var/www/html - ./.docker-config/nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - php - mysql networks: - backstage
php:
build:
context: ./.docker-config/dockerfiles
dockerfile: php.dockerfile
volumes:
- ./laravel:/var/www/html:delegated
networks:
- backstagemysql:
image: mysql:5.7
env_file:
- ./.docker-config/mysql/mysql.env
ports:
- '33060:3306'
networks:
- backstagecomposer:
build:
context: ./.docker-config/dockerfiles
dockerfile: composer.dockerfile
volumes:
- ./laravel:/var/www/html
networks:
- backstageartisan:
build:
context: ./.docker-config/dockerfiles
dockerfile: php.dockerfile
volumes:
- ./laravel:/var/www/html
entrypoint: ["php", "/var/www/html/artisan"]
depends_on:
- mysql
networks:
- backstagenpm:
image: node:14-alpine
working_dir: /var/www/html
entrypoint: ["npm"]
volumes:
- ./laravel:/var/www/html
networks:
- backstagephpunit:
build:
context: ./.docker-config/dockerfiles
dockerfile: php.dockerfile
volumes:
- ./laravel:/var/www/html
entrypoint: ["vendor/bin/phpunit"]
networks:
- backstage
As you see, I defined
entrypoint
for thephpunit
container, but I don't want to start the phpunit when I rundocker-compose up -d
.How can I do that?
-
You can scale service that you don't want to run to 0
docker-compose up --scale phpunit=0 -d
And it will not start container for phpunit service as stated in https://docs.docker.com/compose/reference/up/You can also check https://docs.docker.com/compose/profiles/ for more options on excluding certain services in your docker-compose file.