Multipurpose VIP Docker container images

Overview

VIP Container Images

This repository is used to build Docker container images used, among others, by the VIP Local Development Environment.

Images are built and published using GitHub Actions and GitHub Packages. All images in this repository are multi-architechture images, supporting amd64 and arm64.

Using the images

You can find the most up to date versions of the images and the command to pull them in the sidebar, under the Packages section. TL;DR the pulling has to be prefixed with ghcr.io/automattic/vip-container-images. For instance:

docker pull ghcr.io/automattic/vip-container-images/alpine:3.14.1

Using image locally in dev-env

The easiest way is to reconfigure lando file in specific dev-env to build image directly from this repository. For example for dev-tools you could do something like this:

services:

  devtools:
    type: compose
    services:
      build:
        context: ~/git/automattic/vip-container-images
        dockerfile: ~/git/automattic/vip-container-images/dev-tools/Dockerfile
      command: sleep infinity
      volumes:
        - devtools:/dev-tools
    volumes:
      devtools: {}

Note: Lando will try to pull image from remote repository if you would use image instead of build which would probably fail if your image is only local one.

Publishing the images

The image publishing process is performed by a GitHub action every time a commit is done to master. All workflows are triggered then, therefore, all images are built in parallel.

Updating Docker images

This repository has Dependabot set up. Whenever a Docker base image has a new available version, the bot will open a Pull Request with the change.

Comments
  • Start cron control runner on php containers

    Start cron control runner on php containers

    Currently cron is not processed on dev-envs, as we set the WPCOM_VIP_LOAD_CRON_CONTROL_LOCALLY constant but never kick off the runner.

    So this adds the cron runner to php containers in a background process. Using pretty conservative intervals, will only check for site changes every 120seconds and each site will get events to run every 60 seconds.

    I tried to do this as a dev-tools script and w/ lando run, run_as_root, and various lando events. In each case, for an unknown reason, the background process would always disappear during dev-env's first boot-up. Subsequent stop/starts would work with some of them, but alas. This should be quite okay though, as we can pass lando-file / template-specific variables to the run.sh if needed.

    Testing

    In the lando file, replace the php image with a local copy, like this:

      php:
        type: compose
        services:
          build:
            context: /Users/caleb/code/vip/platform/vip-container-images
            dockerfile: /Users/caleb/code/vip/platform/vip-container-images/php-fpm/Dockerfile
    

    Then do dev-env create, dev-env start, etc. Once running, should see Starting cron runner in the php container logs. But then for further checking can exec into the container and see the process running with ps. Logs for the runner can be seen: tail -f /tmp/cron-runner.log. Logs should pretty quiet unless real errors happen. if you want to see more runner-related logs, you'll need to pass -debug to the cron-control-runner CLI.

    [Status] Has Feedback [Status] Stale [Status] Autoclosed 
    opened by WPprodigy 12
  • Makes dev-env closer to vip go

    Makes dev-env closer to vip go

    This change sets some constants and config to behave more closely to VIP go platform.

    • Also some HTTPS manipulation needed to support eg. define( 'FORCE_SSL_ADMIN', true );

    Solves https://github.com/Automattic/vip-container-images/issues/267

    [Status] Needs Review 
    opened by pschoffer 4
  • Parity for handling $_SERVER['HTTPS'] = 'on';

    Parity for handling $_SERVER['HTTPS'] = 'on';

    In WPVIP hosted environments, $_SERVER['HTTPS'] is set to on accordingly. In the Lando environment, a condition similar to the following is missing:

    if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
    	$_SERVER['HTTPS'] = 'on';
    }
    

    This is also pointed out on the WP doc pages for is_ssl() here.

    If one sets FORCE_SSL_ADMIN to true in a local environment and without a similar condition to the above that results in setting of $_SERVER['HTTPS'] = 'on';, the result is an endless HTTP 302 redirect loop.

    The fall through condition of checking '443' == $_SERVER['SERVER_PORT'] also subsequently can't be reached.

    Ideally as much of the generated config constants and conditions are incorporated into the local environment one for parity (where it makes sense/is applicable).

    bug [Status] Stale [Status] Autoclosed 
    opened by seanosh 4
  • Implement a simple check that runs until the files are copied to make sure setup only proceeds after, otherwise we're risking race conditions

    Implement a simple check that runs until the files are copied to make sure setup only proceeds after, otherwise we're risking race conditions

    It remains to be seen whether /wp/wp-includes/pomo/mo.php is a good thing to check or if there's something else we should check.

    This also removed the chown as it doesn't seem to be helpful in the situation.

    There's going to be a counter-part on the CLI side to get rid of the PHP healthcheck as it's also not helpful

    [Status] Ready to Merge 
    opened by rinatkhaziev 3
  • chown with

    chown with "--silent" in setup.sh

    add --silent tag to chown operation so as to not cause panic if the chown cannot be performed

    prevents someone from seeing the unsightly eyesore in this image: Screen Shot 2022-02-28 at 8 04 22 AM

    opened by jesse-greathouse 3
  • Alternative php-fpm image

    Alternative php-fpm image

    In #163 we had to build a lot of extensions from the source so that our development environment matches our production environment. However, because we had to cross-build everything for ARM64, this was painfully slow.

    This PR introduces an alternative php-fpm image based on alpine:3.15. Instead of building PHP extensions from the source code, we install the prebuilt ones from the Alpine repository. This is much faster :-)

    [Status] Needs Review docker 
    opened by sjinks 3
  • Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.3/wp-content/themes/twentytwentyone

    Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.3/wp-content/themes/twentytwentyone

    Bumps nanoid from 3.1.23 to 3.2.0.

    Changelog

    Sourced from nanoid's changelog.

    Change Log

    This project adheres to Semantic Versioning.

    3.2

    • Added --size and --alphabet arguments to binary (by Vitaly Baev).

    3.1.32

    • Reduced async exports size (by Artyom Arutyunyan).
    • Moved from Jest to uvu (by Vitaly Baev).

    3.1.31

    • Fixed collision vulnerability on object in size (by Artyom Arutyunyan).

    3.1.30

    • Reduced size for project with brotli compression (by Anton Khlynovskiy).

    3.1.29

    • Reduced npm package size.

    3.1.28

    • Reduced npm package size.

    3.1.27

    • Cleaned dependencies from development tools.

    3.1.26

    • Improved performance (by Eitan Har-Shoshanim).
    • Reduced npm package size.

    3.1.25

    • Fixed browserify support.

    3.1.24

    • Fixed browserify support (by Artur Paikin).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 3
  • Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.2/wp-content/themes/twentytwenty

    Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.2/wp-content/themes/twentytwenty

    Bumps nanoid from 3.1.23 to 3.2.0.

    Changelog

    Sourced from nanoid's changelog.

    Change Log

    This project adheres to Semantic Versioning.

    3.2

    • Added --size and --alphabet arguments to binary (by Vitaly Baev).

    3.1.32

    • Reduced async exports size (by Artyom Arutyunyan).
    • Moved from Jest to uvu (by Vitaly Baev).

    3.1.31

    • Fixed collision vulnerability on object in size (by Artyom Arutyunyan).

    3.1.30

    • Reduced size for project with brotli compression (by Anton Khlynovskiy).

    3.1.29

    • Reduced npm package size.

    3.1.28

    • Reduced npm package size.

    3.1.27

    • Cleaned dependencies from development tools.

    3.1.26

    • Improved performance (by Eitan Har-Shoshanim).
    • Reduced npm package size.

    3.1.25

    • Fixed browserify support.

    3.1.24

    • Fixed browserify support (by Artur Paikin).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 3
  • Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.2/wp-content/themes/twentytwentyone

    Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.2/wp-content/themes/twentytwentyone

    Bumps nanoid from 3.1.23 to 3.2.0.

    Changelog

    Sourced from nanoid's changelog.

    Change Log

    This project adheres to Semantic Versioning.

    3.2

    • Added --size and --alphabet arguments to binary (by Vitaly Baev).

    3.1.32

    • Reduced async exports size (by Artyom Arutyunyan).
    • Moved from Jest to uvu (by Vitaly Baev).

    3.1.31

    • Fixed collision vulnerability on object in size (by Artyom Arutyunyan).

    3.1.30

    • Reduced size for project with brotli compression (by Anton Khlynovskiy).

    3.1.29

    • Reduced npm package size.

    3.1.28

    • Reduced npm package size.

    3.1.27

    • Cleaned dependencies from development tools.

    3.1.26

    • Improved performance (by Eitan Har-Shoshanim).
    • Reduced npm package size.

    3.1.25

    • Fixed browserify support.

    3.1.24

    • Fixed browserify support (by Artur Paikin).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 3
  • Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.2/wp-content/themes/twentynineteen

    Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.2/wp-content/themes/twentynineteen

    Bumps nanoid from 3.1.23 to 3.2.0.

    Changelog

    Sourced from nanoid's changelog.

    Change Log

    This project adheres to Semantic Versioning.

    3.2

    • Added --size and --alphabet arguments to binary (by Vitaly Baev).

    3.1.32

    • Reduced async exports size (by Artyom Arutyunyan).
    • Moved from Jest to uvu (by Vitaly Baev).

    3.1.31

    • Fixed collision vulnerability on object in size (by Artyom Arutyunyan).

    3.1.30

    • Reduced size for project with brotli compression (by Anton Khlynovskiy).

    3.1.29

    • Reduced npm package size.

    3.1.28

    • Reduced npm package size.

    3.1.27

    • Cleaned dependencies from development tools.

    3.1.26

    • Improved performance (by Eitan Har-Shoshanim).
    • Reduced npm package size.

    3.1.25

    • Fixed browserify support.

    3.1.24

    • Fixed browserify support (by Artur Paikin).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 3
  • Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.3/wp-content/themes/twentytwenty

    Bump nanoid from 3.1.23 to 3.2.0 in /wordpress/public/5.8.3/wp-content/themes/twentytwenty

    Bumps nanoid from 3.1.23 to 3.2.0.

    Changelog

    Sourced from nanoid's changelog.

    Change Log

    This project adheres to Semantic Versioning.

    3.2

    • Added --size and --alphabet arguments to binary (by Vitaly Baev).

    3.1.32

    • Reduced async exports size (by Artyom Arutyunyan).
    • Moved from Jest to uvu (by Vitaly Baev).

    3.1.31

    • Fixed collision vulnerability on object in size (by Artyom Arutyunyan).

    3.1.30

    • Reduced size for project with brotli compression (by Anton Khlynovskiy).

    3.1.29

    • Reduced npm package size.

    3.1.28

    • Reduced npm package size.

    3.1.27

    • Cleaned dependencies from development tools.

    3.1.26

    • Improved performance (by Eitan Har-Shoshanim).
    • Reduced npm package size.

    3.1.25

    • Fixed browserify support.

    3.1.24

    • Fixed browserify support (by Artur Paikin).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 3
  • Gmagick for PHP 8.0 / 8.1 / 8.2 Docker images

    Gmagick for PHP 8.0 / 8.1 / 8.2 Docker images

    On a project I've been involved in hosted on WordPress.com VIP, we've been trying to do work with Gmagick for some handling of image previews for PDFs. However, after setting up the environment using the VIP CLI, I noticed the Gmagick library was missing.

    I've noticed in the Dockerfiles, the library is commented out except for PHP 7.4;

    https://github.com/Automattic/vip-container-images/blob/dc8998c05c7ec87927ce5d93b62c7bca820db316/php-fpm/Dockerfile.80#L15

    https://github.com/Automattic/vip-container-images/blob/dc8998c05c7ec87927ce5d93b62c7bca820db316/php-fpm/Dockerfile.81#L15

    https://github.com/Automattic/vip-container-images/blob/dc8998c05c7ec87927ce5d93b62c7bca820db316/php-fpm/Dockerfile.82#L21

    Would it be possible to have Gmagick included for the PHP 8 Docker image?

    As noted in the VIP Lobby post here, PHP 8 is the preferred version since November 2022 and as it is a relatively new project I am on, we are on PHP 8. So at the moment the discrepancy is causing a bit of extra work.

    Thank you for your time and assistance.

    opened by cameronterry 3
Owner
Automattic
We are passionate about making the web a better place.
Automattic
Quickly deploy a seedbox with self-hosted services and a web portal using Docker and docker-compose.

Seedbox Quickly deploy and configure a seedbox with self-hosted services and a web portal using Docker and a single docker-compose.yml file. Screensho

null 6 Dec 7, 2022
Docker Shortie, simplifying calls to CLI commands inside docker containers.

What is DockTie Is a simple wrapper script for commands inside docker container(s). So for instance, what you would normally run as: docker-compo

null 3 Mar 31, 2022
Full PHP development environment for Docker.

Full PHP development environment based on Docker. Use Docker First - Learn About It Later! Join Us Awesome People Laradock is an MIT-licensed open sou

laradock 11.7k Jan 7, 2023
A modern Docker LAMP stack and MEAN stack for local development

The Devilbox Usage | Architecture | Community | Features | Intranet | Screenshots | Contributing | Logos | License Support for valid https out of the

cytopia 4k Jan 8, 2023
Up and running with small Docker environments

Vessel Up and running with small Docker dev environments. Documentation Full documentation can be found at https://vessel.shippingdocker.com. Install

Shipping Docker 1.1k Dec 17, 2022
Symfony5 template w/ Docker config

Symfony5 w/ Docker config A project template in the following configuration: Symfony 5.2 PHP8 PostgreSQL 13.2 Separate Docker containers for Nginx, FP

Andrew Alyamovsky 5 May 14, 2022
Docker NAT容器自助部署php版本,实现从搭建到跑路的全生命周期功能。

DockerLabs-V1 游客可通过web页面直接创建出NAT容器,本项目从发布后将不再维护任何bug,以后有时间会出sdk重构版。 环境要求 使用了赛邮云发送短信号码,需要自己去申请appid和appkey填写到app_config.php文件中。需要修改所有html文件和api/kill.ph

xiz 35 Mar 4, 2022
The project provides a docker image for Files App(files.photo.gallery).

For the purpose of learning,I replace the files.js with cracked version which just remove authorization code.

cjy0526 30 Oct 16, 2022
Docker Containers for simple Laravel development.

Docker containers of Laravel development. Docker Containers for simple Laravel development. Prerequisites This package only works for Linux users righ

Steve Azzopardi 14 May 19, 2022
Laravel 5 with Dockerized Gulp, PHP-FPM, MySQL and nginx using docker-compose

docker-laravel Laravel 5 with Dockerized PHP-FPM, MySQL and nginx using docker-compose Usage Get Composer docker-compose run --rm phpnginx curl -O htt

Harsh Vakharia 83 Feb 8, 2022
Shopware 6 app boilerplate + Symfony backend + Dockware docker dev environment 💙

Shopware 6 app boilerplate with Symfony backend This boilerplate template can be used to get up and running with a docker-based dev setup for Shopware

Rune Laenen 8 Oct 11, 2022
Docker with PHP 7.4 fpm, Nginx, Composer, PhpUnit and MaridaDB

Clean Docker with PHP Docker with PHP 7.4 fpm, Nginx, Composer, PhpUnit and MariaDB Starting app docker-compose up -d Main page

Grzegorz Bielski 7 Nov 17, 2022
Ponto de partida para utilização do Docker Compose 💙✨

Docker-compose Docker | WSL2 | PHP | Nginx | MySQL Esse projeto fornece um ponto de partida para integrar diferentes serviços usando um arquivo Compos

Julia Tangerino 1 Nov 9, 2021
A package that allows you to generate simple and fast Docker configurations for your Laravel application!

A package that allows you to generate simple and fast Docker configurations for your Laravel application!

Lucas Nepomuceno 3 Oct 8, 2022
Docker-based workflow management system for Laravel

DevOption Workflows Workflows is a Docker-based workflow management system for Laravel applications. Installation You can install the package via comp

devoption.io 1 Jan 5, 2022
Runs a PHP-based startpage in Docker

docker-php-startpage Runs a PHP-based startpage in Docker Source code: GitHub Docker container: Docker Hub Image base: PHP Init system: N/A Applicatio

Logan Marchione 25 Dec 28, 2022
Lamp Docker skeleton PHP + Nginx + Mysql + Redis

Stop installing the entire development stack on your local machine. This project will allow you to quickly start working with php. To install, you need to install docker locally.

Krepysh 9 Dec 27, 2022
ServD - a Docker PHP development environment heavily inspired by Laravel Valet and Laradock

ServD ServD is a Docker PHP development environment heavily inspired by Laravel Valet and Laradock, it supports multiple projects within a working dir

Matt Clinton 2 May 13, 2022
Multipurpose Laravel and Livewire Application. This is a part of tutorial series on Youtube.

Multipurpose Laravel and Livewire Application This is a part of YouTube tutorial series on building application using Laravel and Livewire. Here is th

Clovon 88 Dec 23, 2022
🐋 This project aims to broaden knowledge of system administration by using Docker: virtualizing several Docker images, creating them in a new personal virtual machine.

?? This project aims to broaden knowledge of system administration by using Docker: virtualizing several Docker images, creating them in a new personal virtual machine.

Anton Kliek 1 Jan 26, 2022