deployment

  • The asset pipeline Laravel 5.4 shipped

    Elixir wrapped gulp, which wrapped everything else. Mix wraps webpack directly — and leaves the configuration reachable when the abstraction runs out.

  • Swarm mode is in the engine and mostly unused

    Since 1.12 the engine has had orchestration built in — docker swarm init and a cluster exists. It is genuinely simple and almost nobody is running it, which…

  • depends_on does not wait for readiness, and never did

    depends_on controls start order and nothing else. The database container being started is not the database accepting connections, so the application starts, fails to connect, and exits. Version…

  • Multi-stage builds arrived in 17.05

    Building assets inside the runtime image drags a compiler toolchain into production, and deleting it afterwards does nothing because layers are additive. Until May the workaround was two…

  • Composer 1.4 made the platform check a real error

    Installing a package requiring a PHP version newer than the one running used to be a warning in some paths. Composer 1.4 tightened it, which surfaces a problem…

  • Redirect HTTP to HTTPS in nginx

  • Queues, workers and the jobs that fail twice

    The email that arrived four times and the charge that arrived twice. What makes a job safe to run again, and keeping workers alive without them serving stale…

  • Copy a file out of a running container

  • Extracting a service without a rewrite

    The reporting code had one caller and a six-hour test run. Finding the seam, dealing with the shared schema honestly, and routing traffic gradually rather than switching.

  • A deploy that is nothing but a symlink swap

    Copying files into the live directory means the site serves a half-updated tree for the duration — new templates against old classes, for as long as the copy…