I heard someone say that…
Docker compose is designed for development NOT for production.
But I have seen people use Docker compose on production with bind mounts. Then pull the latest changes from github and it appears live in production without the need to rebuild. But others say that you need to
COPY . . for production and rebuild.
But how does this work? Because in
docker-compose.yaml you can specify
depends-on which doesn’t start one container until the other is running. If I don’t use
docker-compose in production then what about this?
How would I push my docker-compose to production (I have 4 services / 4 images that I need to run). With
docker-compose up -d it is so easy.
version: '3' services: # Nginx client server nginx-client: container_name: nginx-client build: context: . restart: always stdin_open: true environment: - CHOKIDAR_USEPOLLING=true ports: - 28874:3000 volumes: - ./client:/var/www - /var/www/node_modules networks: - app-network # MySQL server for the server side app mysql-server: image: mysql:5.7.22 container_name: mysql-server restart: always tty: true ports: - "16427:3306" environment: MYSQL_USER: root MYSQL_ROOT_PASSWORD: BcGH2Gj41J5VF1 MYSQL_DATABASE: todo volumes: - ./docker/mysql-server/my.cnf:/etc/mysql/my.cnf networks: - app-network # Nginx server for the server side app nginx-server: container_name: nginx-server image: nginx:1.17-alpine restart: always ports: - 49691:80 volumes: - ./server:/var/www - ./docker/nginx-server/etc/nginx/conf.d:/etc/nginx/conf.d depends_on: - php-server - mysql-server networks: - app-network # PHP server for the server side app php-server: build: context: . dockerfile: ./docker/php-server/Dockerfile container_name: php-server restart: always tty: true environment: SERVICE_NAME: php SERVICE_TAGS: dev working_dir: /var/www volumes: - ./server:/var/www - ./docker/php-server/local.ini:/usr/local/etc/php/conf.d/local.ini - /var/www/vendor networks: - app-network depends_on: - mysql-server # Networks networks: app-network: driver: bridge