diff --git a/LICENSE b/LICENSE index f71a527..f841fcc 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2024 Dominik Zogg +Copyright (c) 2026 Dominik Zogg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 45b07bc..5ca9553 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,44 @@ # docker +## setup on host + +### bash + +```sh +touch ~/.bash_docker +touch ~/.bash_history +``` + +### git + +```sh +touch ~/.gitconfig +touch ~/.gitignore +``` + +### opencode + +```sh +mkdir -p ~/.config/opencode +[ ! -f ~/.local/share/opencode/auth.json ] && echo '{}' > ~/.config/opencode/tui.json +mkdir -p ~/.local/share/opencode +[ ! -f ~/.local/share/opencode/auth.json ] && echo '{}' > ~/.local/share/opencode/auth.json +``` + +### ssh + +```sh +mkdir -p ~/.ssh +touch ~/.ssh/github.pub +``` + +### zsh + +```sh +touch ~/.zsh_docker +touch ~/.zsh_history +``` + ## Copyright -2024 Dominik Zogg +2026 Dominik Zogg diff --git a/docker-compose.yml b/docker-compose.yml index c51902b..9a290be 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,17 +1,18 @@ -version: '3.0' +name: chubbyphp services: php: container_name: chubbyphp-php - hostname: php + hostname: chubbyphp-php build: dockerfile: ./docker/php/Dockerfile context: ./ args: USER_ID: ${USER_ID:-1000} GROUP_ID: ${GROUP_ID:-1000} + userns_mode: keep-id environment: MONGODB_URI: mongodb://root:6RHL8hKl2XmqKTmxeXOS@mongo:27017/?authSource=admin - POSTGRES_URL: pgsql://root:82fJ1z90aeRFAAhHTM1s@postgres:5432?charset=utf8 + POSTGRES_URL: pgsql://root:81fJ1z90aeRFAAhHTM1s@postgres:5432?charset=utf8 SSH_AUTH_SOCK: /ssh-agent volumes: - ${PWD}/..:/app @@ -19,6 +20,9 @@ services: - ~/.bash_history:/home/php/.bash_history - ~/.gitconfig:/home/php/.gitconfig - ~/.gitignore:/home/php/.gitignore + - ~/.config/opencode/tui.json:/home/php/.config/opencode/tui.json + - ~/.local/share/opencode/auth.json:/home/php/.local/share/opencode/auth.json + - ~/.ssh/github.pub:/home/php/.ssh/github.pub - ~/.zsh_docker:/home/php/.zsh_docker - ~/.zsh_history:/home/php/.zsh_history - $SSH_AUTH_SOCK:/ssh-agent @@ -29,8 +33,8 @@ services: - "host.docker.internal:host-gateway" mongo: container_name: chubbyphp-mongo - hostname: mongo - image: mongo:5.0 + hostname: chubbyphp-mongo + image: mongo:8.0.4 # check before upgrade https://www.mongodb.com/community/forums/t/mongodb-8-x-and-linux-kernel-6-19/337547 environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: 6RHL8hKl2XmqKTmxeXOS @@ -40,19 +44,19 @@ services: - mongo:/data/db postgres: container_name: chubbyphp-postgres - hostname: postgres - image: postgres:14 + hostname: chubbyphp-postgres + image: postgres:17 command: -c log_statement=all -c log_error_verbosity=VERBOSE environment: POSTGRES_USER: root - POSTGRES_PASSWORD: 82fJ1z90aeRFAAhHTM1s + POSTGRES_PASSWORD: 81fJ1z90aeRFAAhHTM1s ports: - '5432:5432' volumes: - postgres:/var/lib/postgresql/data nginx: container_name: chubbyphp-nginx - hostname: nginx + hostname: chubbyphp-nginx image: nginx ports: - '443:443' diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index 8505c2d..05fe40b 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile @@ -1,35 +1,38 @@ -FROM rockylinux:9.3 +FROM rockylinux/rockylinux:10.0 SHELL ["/bin/bash", "-c"] RUN dnf upgrade -y --refresh -RUN dnf install -y epel-release https://rpms.remirepo.net/enterprise/remi-release-9.rpm +RUN dnf install -y epel-release https://rpms.remirepo.net/enterprise/remi-release-10.rpm RUN dnf install -y --nobest \ - compat-openssl11 \ git \ glibc-langpack-de \ langpacks-de \ nmap-ncat \ - php83-php-ast \ - php83-php-bcmath \ - php83-php-cli \ - php83-php-devel \ - php83-php-fpm \ - php83-php-intl \ - php83-php-mbstring \ - php83-php-opcache \ - php83-php-pecl-apcu \ - php83-php-pecl-memcached \ - php83-php-pecl-mongodb \ - php83-php-pecl-pcov \ - php83-php-pecl-swoole5 \ - php83-php-pecl-xdebug3 \ - php83-php-pecl-zip \ - php83-php-pgsql \ - php83-php-sodium \ - php83-php-xml \ + php81-php-ast \ + php81-php-bcmath \ + php81-php-cli \ + php81-php-devel \ + php81-php-fpm \ + php81-php-gd \ + php81-php-intl \ + php81-php-mbstring \ + php81-php-opcache \ + php81-php-pecl-amqp \ + php81-php-pecl-apcu \ + php81-php-pecl-memcached \ + php81-php-pecl-mongodb \ + php81-php-pecl-pcov \ + php81-php-pecl-rdkafka6 \ + php81-php-pecl-redis \ + php81-php-pecl-swoole6 \ + php81-php-pecl-xdebug3 \ + php81-php-pecl-zip \ + php81-php-pgsql \ + php81-php-sodium \ + php81-php-xml \ procps-ng \ sudo \ supervisor \ @@ -37,9 +40,9 @@ RUN dnf install -y --nobest \ vim \ zsh -RUN ln -sf /usr/bin/php83 /usr/bin/php \ - && rm /etc/opt/remi/php83/php.d/15-xdebug.ini \ - && rm /etc/opt/remi/php83/php.d/40-pcov.ini +RUN ln -sf /usr/bin/php81 /usr/bin/php \ + && rm /etc/opt/remi/php81/php.d/15-xdebug.ini \ + && rm /etc/opt/remi/php81/php.d/40-pcov.ini ENV TZ=Europe/Zurich @@ -53,13 +56,17 @@ COPY docker/php/files / ARG USER_ID ARG GROUP_ID -RUN groupadd -g ${GROUP_ID} php \ +RUN getent group ${GROUP_ID} >/dev/null || groupadd -g ${GROUP_ID} php \ && useradd -u ${USER_ID} -g ${GROUP_ID} -s /bin/bash -M php \ && chown -Rf php: /home/php \ && echo 'php ALL=(ALL) NOPASSWD: ALL' > '/etc/sudoers.d/php' USER php +WORKDIR /home/php + +RUN curl -fsSL https://opencode.ai/install | bash -s -- --no-modify-path && mkdir -p "$HOME/.local/share/opencode" + WORKDIR /app CMD /usr/bin/supervisord diff --git a/docker/php/files/etc/opt/remi/php83/php-fpm.conf b/docker/php/files/etc/opt/remi/php81/php-fpm.conf similarity index 100% rename from docker/php/files/etc/opt/remi/php83/php-fpm.conf rename to docker/php/files/etc/opt/remi/php81/php-fpm.conf diff --git a/docker/php/files/etc/opt/remi/php83/php.ini b/docker/php/files/etc/opt/remi/php81/php.ini similarity index 100% rename from docker/php/files/etc/opt/remi/php83/php.ini rename to docker/php/files/etc/opt/remi/php81/php.ini diff --git a/docker/php/files/etc/supervisord.conf b/docker/php/files/etc/supervisord.conf index d09f82a..bd3f120 100644 --- a/docker/php/files/etc/supervisord.conf +++ b/docker/php/files/etc/supervisord.conf @@ -15,7 +15,7 @@ supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface serverurl=unix:///tmp/supervisor.sock [program:php-fpm] -command=/opt/remi/php83/root/usr/sbin/php-fpm -c /etc/opt/remi/php83/php-fpm.conf -F +command=/opt/remi/php81/root/usr/sbin/php-fpm -c /etc/opt/remi/php81/php-fpm.conf -F stdout_logfile=/tmp/supervisord.log stdout_syslog=true stderr_logfile=/tmp/supervisord.log diff --git a/docker/php/files/home/php/.sharedrc b/docker/php/files/home/php/.sharedrc index 9acaf8b..d9c0891 100644 --- a/docker/php/files/home/php/.sharedrc +++ b/docker/php/files/home/php/.sharedrc @@ -1,4 +1,6 @@ -# history +# opencode +export PATH=$HOME/.opencode/bin:$PATH + export HISTSIZE=5000 export SAVEHIST=100000 @@ -16,7 +18,7 @@ alias rm='rm -i' alias php-fpm-restart='/usr/bin/supervisorctl -c /etc/supervisord.conf restart php-fpm' -alias xdebug-on='echo "zend_extension=xdebug.so" | sudo tee /etc/opt/remi/php83/php.d/15-xdebug.ini && php-fpm-restart' -alias xdebug-off='sudo rm /etc/opt/remi/php83/php.d/15-xdebug.ini && php-fpm-restart' -alias pcov-on='echo "extension=pcov.so" | sudo tee /etc/opt/remi/php83/php.d/40-pcov.ini && php-fpm-restart' -alias pcov-off='sudo rm /etc/opt/remi/php83/php.d/40-pcov.ini && php-fpm-restart' +alias xdebug-on='echo "zend_extension=xdebug.so" | sudo tee /etc/opt/remi/php81/php.d/15-xdebug.ini && php-fpm-restart' +alias xdebug-off='sudo rm /etc/opt/remi/php81/php.d/15-xdebug.ini && php-fpm-restart' +alias pcov-on='echo "extension=pcov.so" | sudo tee /etc/opt/remi/php81/php.d/40-pcov.ini && php-fpm-restart' +alias pcov-off='sudo rm /etc/opt/remi/php81/php.d/40-pcov.ini && php-fpm-restart' diff --git a/docker/php/files/home/php/.ssh/known_hosts b/docker/php/files/home/php/.ssh/known_hosts new file mode 100644 index 0000000..e69de29