Skip to content

Commit 11c114d

Browse files
committed
Modernize stack: Debian bookworm, PHP 8.5, Node 24 LTS
CI has been red on every run since stretch was archived: the images build on dockette/stretch, whose apt sources 404 because Debian stretch is EOL and was removed from deb.debian.org and security.debian.org. Rather than pin the dead suite to archive.debian.org, move the whole stack to current upstream versions. - Base all images on dockette/debian:bookworm. - Replace the php/{5.6,5.6-fpm,7.1,7.1-fpm,7.2,7.2-fpm} matrix with php/8.5 and php/8.5-fpm; sury publishes no PHP 5.6/7.x for bookworm. - Install Node.js 24.19.0 (latest LTS) from the official nodejs.org tarball; the nodesource setup_10.x script and its stretch distribution are gone. Node 18+ also needs glibc 2.28, which stretch cannot provide. - Drop PHP extensions that no longer exist for PHP 8.x: apc (superseded by apcu), geoip, mcrypt, imap (unbundled in 8.4), xmlrpc (removed from core in 8.0) and imagick; mongo becomes mongodb. - Install the Blackfire probe from packages.blackfire.io instead of hardcoded binary URLs, and drop the stray override that pointed the agent socket at a public IP instead of BLACKFIRE_AGENT. - Drop hirak/prestissimo, a Composer 1-only plugin that breaks Composer 2, and set COMPOSER_HOME so the global bin path stays /root/.composer. - Rewrite devstack.ini for Xdebug 3 (mode/start_with_request/client_host); the Xdebug 2 remote_* keys were silently ignored. - Bump MariaDB 10.1 to 12.3 and PostgreSQL 9.6 to 18, drop the obsolete compose version key, and rename service php72 to php85 (vhost local.dev7 becomes local.dev8). - Update actions/checkout to v7 and docker/setup-buildx-action to v4, clearing the Node 20 deprecation warnings. - Refresh README and AGENTS.md for the new versions and service names. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QNkYkDFukA7kdCTsnWLrCD
1 parent 016a876 commit 11c114d

26 files changed

Lines changed: 273 additions & 844 deletions

File tree

‎.github/workflows/docker.yml‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121

2222
steps:
2323
- name: "Checkout"
24-
uses: actions/checkout@v4
24+
uses: actions/checkout@v7
2525

2626
- name: "Validate compose and scripts"
2727
run: "make test"
@@ -33,12 +33,12 @@ jobs:
3333

3434
steps:
3535
- name: "Checkout"
36-
uses: actions/checkout@v4
36+
uses: actions/checkout@v7
3737

3838
- name: "Set up Docker Buildx"
39-
uses: docker/setup-buildx-action@v3
39+
uses: docker/setup-buildx-action@v4
4040

41-
- name: "Build selected legacy images"
41+
- name: "Build selected images"
4242
run: "make build"
4343

4444
docs:
@@ -49,7 +49,7 @@ jobs:
4949

5050
steps:
5151
- name: "Checkout"
52-
uses: actions/checkout@v4
52+
uses: actions/checkout@v7
5353

5454
- name: "Update Docker Hub description"
5555
uses: peter-evans/dockerhub-description@v5

‎AGENTS.md‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@
22

33
## Project
44

5-
Dockette DevStack is a legacy Docker Compose LAMP development stack. It combines Apache, PHP FPM, Node.js, Adminer, MariaDB, optional PostgreSQL, and user data helper containers through `docker-compose.yml` and the `devstack` control script.
5+
Dockette DevStack is a Docker Compose LAMP development stack. It combines Apache, PHP FPM, Node.js, Adminer, MariaDB, optional PostgreSQL, and user data helper containers through `docker-compose.yml` and the `devstack` control script.
66

77
## Images
88

99
- Docker Hub repository: `dockette/devstack`.
1010
- Local image contexts live in `apache/`, `nodejs/`, and `php/*`.
11-
- The default compose file references tags such as `dockette/devstack:apache`, `dockette/devstack:php72-fpm`, and `dockette/devstack:nodejs`.
12-
- Base images and runtime versions are legacy; avoid broad upgrades unless explicitly requested.
11+
- The default compose file references tags such as `dockette/devstack:apache`, `dockette/devstack:php85-fpm`, and `dockette/devstack:nodejs`.
12+
- All images build on `dockette/debian:bookworm`. PHP comes from `packages.sury.org`, Node.js from the official `nodejs.org` tarball, and the Blackfire probe from `packages.blackfire.io`.
13+
- Keep runtimes on current upstream versions; when bumping PHP, update `php/*` directory names, the `PHP_VERSION` env, the FPM `CMD`, the `Makefile` tag, and the compose service name together.
1314

1415
## Commands
1516

16-
- `make build` builds selected representative local images: Apache, PHP 7.2 FPM, and Node.js.
17+
- `make build` builds selected representative local images: Apache, PHP 8.5 FPM, and Node.js.
1718
- `make test` validates `docker-compose.yml` with `docker compose config` and checks `devstack` shell syntax.
1819
- `make run` starts the compose stack with `docker compose up -d --remove-orphans`.
1920

@@ -25,7 +26,7 @@ Dockette DevStack is a legacy Docker Compose LAMP development stack. It combines
2526

2627
## Guidelines
2728

28-
- Preserve the legacy compose UX and documented service names unless the task explicitly asks for migration.
29+
- Preserve the compose UX and documented service names unless the task explicitly asks for migration.
2930
- Prefer small CI checks: compose config, shell syntax, and representative image builds.
3031
- Place `.PHONY` directly above every Makefile target.
3132
- Keep README badges in the Dockette `copybara` style and do not add Slack or Gitter badges.

‎Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ COMPOSE_SSH_AUTH_SOCK?=/tmp/devstack-ssh-agent
77
.PHONY: build
88
build:
99
docker buildx build --platform ${DOCKER_PLATFORMS} -t ${DOCKER_IMAGE}:apache apache
10-
docker buildx build --platform ${DOCKER_PLATFORMS} -t ${DOCKER_IMAGE}:php72-fpm php/7.2-fpm
10+
docker buildx build --platform ${DOCKER_PLATFORMS} -t ${DOCKER_IMAGE}:php85-fpm php/8.5-fpm
1111
docker buildx build --platform ${DOCKER_PLATFORMS} -t ${DOCKER_IMAGE}:nodejs nodejs
1212

1313
.PHONY: test

‎README.md‎

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ Great LAMP devstack based on **Docker** & **Docker Compose** for your home progr
1212
## LAMP
1313

1414
- Apache 2.4.x
15-
- PHP 7.2.x + Composer + PHPMailer
16-
- MariaDB 10.1
17-
- Adminer 4.3.x
15+
- PHP 8.5.x + Composer + PHPMailer
16+
- MariaDB 12.3
17+
- Adminer (see [dockette/adminer](https://github.com/dockette/adminer))
1818

1919
Optional services are prepared in `docker-compose.yml`, but are commented out until you enable them:
2020

21-
- PHP 5.6.x + Composer + PHPMailer
22-
- NodeJS 8.x + NPM 5.x
23-
- PostgreSQL 9.6
21+
- NodeJS 24.x (latest LTS) + NPM
22+
- PostgreSQL 18
2423

2524
## Install
2625

@@ -61,8 +60,7 @@ Optional services are prepared in `docker-compose.yml`, but are commented out un
6160
| Container | Ports | IP |
6261
|--------------------------|----------|--------------|
6362
| Apache | 80 / 443 | 172.10.10.5 |
64-
| PHP 7.2 + FPM | | 172.10.10.10 |
65-
| PHP 5.6 + FPM (optional) | | 172.10.10.11 |
63+
| PHP 8.5 + FPM | | 172.10.10.10 |
6664
| NodeJS (optional) | | 172.10.10.12 |
6765
| Adminer | 8000 | 172.10.10.13 |
6866
| MariaDB | 3306 | 172.10.10.20 |
@@ -81,17 +79,17 @@ If you didn't change the `DEVSTACK_DOCKER` variable, you should place your `dock
8179
After you've followed install section, your devstack should be well prepared. One thing left, you should configure your devstack (passwords, folders, etc).
8280
8381
You should:
84-
- setup your [**data homeland**](https://github.com/dockette/devstack/blob/master/docker-compose.yml#L151-L153)
85-
- setup MySQL [**root password**](https://github.com/dockette/devstack/blob/master/docker-compose.yml#L125-L127)
86-
- setup PostgreSQL [**root password**](https://github.com/dockette/devstack/blob/master/docker-compose.yml#L144-L146) if you enable PostgreSQL
82+
- setup your [**data homeland**](https://github.com/dockette/devstack/blob/master/docker-compose.yml#L130-L131)
83+
- setup MySQL [**root password**](https://github.com/dockette/devstack/blob/master/docker-compose.yml#L104-L105)
84+
- setup PostgreSQL [**root password**](https://github.com/dockette/devstack/blob/master/docker-compose.yml#L123-L124) if you enable PostgreSQL
8785
8886
### Userdirs
8987
9088
There are two kind of users inside these containers, **root** (main unix user) and **dfx** (special user with uid 1000 in all `dockette` based images).
9189
92-
You can find it in docker-compose.yml [file in section/container](https://github.com/dockette/devstack/blob/master/docker-compose.yml#L155-L166).
90+
You can find it in docker-compose.yml [file in section/container](https://github.com/dockette/devstack/blob/master/docker-compose.yml#L134-L144).
9391
94-
On the containers startup, your `users dir` are attached to `php72` and to `php56`/`nodejs` when you enable those optional containers. You can create your own `.bash_profile`, `.bashrc` files
92+
On the containers startup, your `users dir` are attached to `php85` and to `nodejs` when you enable that optional container. You can create your own `.bash_profile`, `.bashrc` files
9593
for easier manipulation inside docker containers.
9694
9795
[**TIP**] There used to be a skeleton in ubuntu/debian/mint system.
@@ -156,24 +154,17 @@ By default is devstack available on domains:
156154
- localhost (php)
157155
- local.dev (php)
158156
- www.local.dev (php)
159-
- local.dev7 (php7)
160-
- www.local.dev7 (php7)
161-
162-
When you enable PHP 5.6, these domains are available too:
163-
164-
- local.dev56 (php56)
165-
- www.local.dev56 (php56)
157+
- local.dev8 (php8)
158+
- www.local.dev8 (php8)
166159

167160
You should add these lines to your `/etc/hosts` file.
168161

169162
```
170163
# Devstack [webserver]
171164
127.0.0.1 local.dev
172165
127.0.0.1 www.local.dev
173-
127.0.0.1 local.dev7
174-
127.0.0.1 www.local.dev7
175-
127.0.0.1 local.dev56
176-
127.0.0.1 www.local.dev56
166+
127.0.0.1 local.dev8
167+
127.0.0.1 www.local.dev8
177168
178169
# Devstack [DB]
179170
172.10.10.20 mariadb
@@ -185,11 +176,10 @@ Give a try!
185176

186177
```
187178
ping local.dev
188-
ping local.dev7
179+
ping local.dev8
189180
ping mariadb
190181
191182
# Optional services
192-
ping local.dev56
193183
ping postgresql
194184
```
195185

‎apache/Dockerfile‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
FROM dockette/stretch
1+
FROM dockette/debian:bookworm
22

3-
MAINTAINER Milan Sulc <sulcmil@gmail.com>
3+
LABEL maintainer="Milan Sulc <sulcmil@gmail.com>"
44

5-
ENV APACHE_RUN_USER www-data
6-
ENV APACHE_RUN_GROUP www-data
7-
ENV APACHE_LOG_DIR /var/log/apache2
8-
ENV APACHE_LOCK_DIR /var/lock/apache2
9-
ENV APACHE_PID_FILE /var/run/apache2.pid
5+
ENV APACHE_RUN_USER=www-data
6+
ENV APACHE_RUN_GROUP=www-data
7+
ENV APACHE_LOG_DIR=/var/log/apache2
8+
ENV APACHE_LOCK_DIR=/var/lock/apache2
9+
ENV APACHE_PID_FILE=/var/run/apache2.pid
1010

1111
RUN apt-get update && apt-get dist-upgrade -y && \
1212
apt-get install -y vim && \
@@ -18,8 +18,8 @@ RUN apt-get update && apt-get dist-upgrade -y && \
1818
apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y && \
1919
rm -rf /var/lib/apt/lists/* /var/lib/log/* /tmp/* /var/tmp/*
2020

21-
ADD sites /etc/apache2/sites-enabled
22-
ADD conf/devstack.conf /etc/apache2/conf-enabled/999-devstack.conf
21+
COPY sites /etc/apache2/sites-enabled
22+
COPY conf/devstack.conf /etc/apache2/conf-enabled/999-devstack.conf
2323

2424
WORKDIR /srv
2525

‎apache/sites/local-dev56.conf‎

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<VirtualHost *:80>
2-
ServerName local.dev7:80
2+
ServerName local.dev8:80
33
ServerAdmin admin@jfx.cz
44

55
<Directory "/srv">
@@ -11,6 +11,6 @@
1111
</Directory>
1212

1313
<FilesMatch \.php$>
14-
SetHandler "proxy:fcgi://php7:9000"
14+
SetHandler "proxy:fcgi://php8:9000"
1515
</FilesMatch>
1616
</VirtualHost>

‎docker-compose.yml‎

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
version: '2'
2-
31
services:
42
apache:
53
image: dockette/devstack:apache
@@ -19,12 +17,11 @@ services:
1917
# - 10443:443
2018

2119
links:
22-
- php72:php
23-
- php72:php7
24-
# - php56:php56
20+
- php85:php
21+
- php85:php8
2522

26-
php72:
27-
image: dockette/devstack:php72-fpm
23+
php85:
24+
image: dockette/devstack:php85-fpm
2825

2926
networks:
3027
default:
@@ -43,25 +40,6 @@ services:
4340
# - postgresql:postgresql
4441
# - blackfire:blackfire
4542

46-
# php56:
47-
# image: dockette/devstack:php56-fpm
48-
49-
# networks:
50-
# default:
51-
# ipv4_address: 172.10.10.11
52-
53-
# environment:
54-
# - SSH_AUTH_SOCK=/ssh-agent
55-
56-
# volumes_from:
57-
# - data
58-
# - userdirs
59-
60-
# links:
61-
# - mariadb:mysql
62-
# - postgresql:postgresql
63-
# - blackfire:blackfire
64-
6543
# nodejs:
6644
# image: dockette/devstack:nodejs
6745

@@ -108,7 +86,7 @@ services:
10886
# - postgresql:postgresql
10987

11088
mariadb:
111-
image: mariadb:10.1
89+
image: mariadb:12.3
11290

11391
networks:
11492
default:
@@ -127,7 +105,7 @@ services:
127105
- MYSQL_ROOT_PASSWORD=root
128106

129107
# postgresql:
130-
# image: postgres:9.6
108+
# image: postgres:18
131109

132110
# networks:
133111
# default:

‎nodejs/Dockerfile‎

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
FROM dockette/stretch
1+
FROM dockette/debian:bookworm
22

3-
MAINTAINER Milan Sulc <sulcmil@gmail.com>
3+
LABEL maintainer="Milan Sulc <sulcmil@gmail.com>"
4+
5+
# NODEJS (latest LTS)
6+
ENV NODE_VERSION=24.19.0
47

58
RUN apt-get update && apt-get dist-upgrade -y && \
69
apt-get install -y wget curl git bash-completion gnupg2 && \
7-
curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
8-
apt-get install -y nodejs && \
10+
curl -fsSLo /tmp/node.tar.gz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" && \
11+
tar -xzf /tmp/node.tar.gz -C /usr/local --strip-components=1 --no-same-owner && \
12+
rm /tmp/node.tar.gz /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md && \
913
npm completion >> /etc/bash_completion.d/npm && \
10-
npm install -g gulp bower grunt && \
14+
npm install -g gulp-cli grunt-cli && \
1115
apt-get remove -y curl && \
1216
apt-get clean -y && apt-get autoclean -y && apt-get autoremove -y && \
1317
rm -rf /var/lib/apt/lists/* /var/lib/log/* /tmp/* /var/tmp/*

0 commit comments

Comments
 (0)