docker configuration for macbook pro with m1 pro chip - php

Have symfony 6.0 project with docker and it's lagging a lot of, as I know it is because of my new macbook pro with m1 chip. Before I used ubuntu, and everything was just fine. Now using arm64v8 images but still got a lot of lagging.
docker configuration is below:
I have Symfony 6.0 project on macbook pro with m1 pro chip
i have docker configuration like this:
docker-compose.yml:
version: '3'
services:
php:
build: ./docker/php
container_name: {PROJECT_NAME}_php
environment:
TZ: Europe/Vilnius
volumes:
- ./docker/php/config/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
- ./docker/php/config/php.ini:/usr/local/etc/php/php.ini:ro
web:
build: ./docker/web
environment:
APP_PROJECT_DIR: {PATH_TO_PROJECT}
volumes:
- ./docker/web/config:/etc/nginx/config:ro
- ./docker/web/nginx.conf:/etc/nginx/nginx.conf:ro
mysql:
image: arm64v8/mariadb:10.6.4
build: ./docker/mysql
docker-compose.override.yml:
version: '3'
services:
php:
hostname: {USER_NAME}-{PROJECT_NAME}-php
working_dir: {PATH_TO_PROJECT}
volumes:
- {PATH_TO_PROJECT}:{PATH_TO_PROJECT}
- ./docker/php/composer/:/var/www/.composer/
- ./docker/php/composer/auth.json:/var/www/.composer/auth.json
- {PATH_TO_PROJECT}/node_modules
web:
environment:
APP_PROJECT_DIR: {PATH_TO_PROJECT}
APP_HOST: {PROJECT_HOST}
extra_hosts:
- "{PROJECT_HOST}:host-gateway"
volumes:
- {PATH_TO_PROJECT}:{PATH_TO_PROJECT}/public
networks:
default:
ipv4_address: 172.12.16.10
ports:
- 98:80
depends_on:
- php
- mysql
mysql:
image: arm64v8/mariadb:10.6.4
ports:
- 4306:3306
expose:
- 3306
environment:
MYSQL_ROOT_PASSWORD: qwerty
networks:
default:
ipv4_address: 172.12.16.30
networks:
default:
name: {PROJECT_NAME}
driver: bridge
ipam:
driver: default
config:
- subnet: 172.12.16.0/24
php Dockerfile:
FROM arm64v8/php:8.0-fpm
USER root
# change user and groups ids
RUN usermod --uid=1000 www-data && \
groupmod --gid=1000 www-data && \
# fix permissions
chown -R www-data:www-data /var/www/
# enable extensions
RUN echo 'START' && \
docker-php-ext-install mysqli && \
docker-php-ext-install bcmath && \
docker-php-ext-install pdo_mysql && \
docker-php-ext-enable opcache && \
docker-php-source delete
RUN docker-php-ext-configure pcntl --enable-pcntl
RUN docker-php-ext-install pcntl
RUN apt-get update && \
apt-get install -y libzip-dev && \
docker-php-ext-install zip && \
apt-get install -y libxml2-dev && \
docker-php-ext-install soap && \
apt-get install -y libicu-dev && \
docker-php-ext-install intl && \
apt-get install -y libgmp-dev && \
docker-php-ext-install gmp && \
apt-get install -y libcurl4 libcurl4-openssl-dev && \
docker-php-ext-install -j$(nproc) curl && \
apt-get install -y libpq-dev && \
docker-php-ext-install pdo_pgsql && \
apt-get install -y libpng-dev libfreetype6-dev libjpeg62-turbo-dev && \
docker-php-ext-install gd && \
rm -r /var/lib/apt/lists/* && \
docker-php-source delete
RUN apt-get update && \
apt-get install -y git zip gnupg && \
rm -r /var/lib/apt/lists/* && \
docker-php-source delete
RUN apt-get update && \
apt-get install -y wget && \
rm -r /var/lib/apt/lists/* && \
docker-php-source delete
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt update && apt install -y yarn && \
rm -r /var/lib/apt/lists/* && \
docker-php-source delete
RUN apt update && apt install -y libxrender1 && apt install -y libfontconfig1 && apt install -y libfontconfig
RUN apt install -y wget fontconfig fontconfig-config xfonts-75dpi xfonts-base
RUN wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_arm64.deb
RUN dpkg -i wkhtmltox_0.12.6-1.buster_arm64.deb
ADD ./includes/install-composer.sh /usr/bin
RUN /usr/bin/install-composer.sh && \
mv composer.phar /usr/bin/composer
RUN apt-get update && \
## zip
apt-get install -y iputils-ping && \
## cleanup
rm -r /var/lib/apt/lists/* && \
docker-php-source delete
USER www-data
mysql Dockerfile:
FROM arm64v8/mariadb:10.6.4
COPY ./config/my.cnf /etc/mysql/conf.d/my.cnf
ENV TZ=Europe/Vilnius
web Dockerfile:
FROM nginx:1.11.0-alpine
COPY docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]
Any suggestions to make it less lagging?

Related

"deploy-php-ext-configure" in /bin/sh missing when building docker laravel image

i am trying to build image and container from a project but i am having an issue when trying to build the image. the project is a template and I already have a project using this template in my computer. I would like to know how to solve it and understand a little more. I hope somebody would help me.
here is the error log when I run the command "docker build -t my-payments ." :
#7 200.3 /bin/sh: 1: deploy-php-ext-configure: not found
here is the "docker-compose.yml" :
version: '3.8'
services:
web:
container_name: laravel-template-...
build:
context: ./
dockerfile: ./Dockerfile.dev
volumes:
- .:/var/www-data
environment:
- PORT=80
ports:
- 81:80
links:
- db
db:
image: postgres:13
container_name: db-lrv-postgres-...
restart: always
environment:
POSTGRES_DB: db-lrv-postgres
POSTGRES_USER: ...
POSTGRES_PASSWORD: ...
TZ: ...
PORT: ${PORT:-5432}
ports:
- "5434:5432"
here is "Dockerfile" :
FROM php:7.4-fpm
USER root
WORKDIR /var/www-data
RUN apt-get update \
# gd
&& apt-get install -y --no-install-recommends build-essential openssl nginx libfreetype6-dev libjpeg-dev libpng-dev libwebp-dev zlib1g-dev libzip-dev gcc g++ make nano vim unzip curl git jpegoptim optipng pngquant gifsicle locales libonig-dev nodejs npm libpq-dev \
#custom-dependencies installed: libpq-dev
&& deploy-php-ext-configure gd \
&& deploy-php-ext-install gd \
# gmp
&& apt-get install -y --no-install-recommends libgmp-dev \
&& deploy-php-ext-install gmp \
# pdo
&& deploy-php-ext-install pdo \
# pdo_pgsql
&& deploy-php-ext-install pgsql pdo_pgsql mbstring \
# opcache
&& deploy-php-ext-enable opcache \
# zip
&& deploy-php-ext-install zip \
&& apt-get autoclean -y \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /tmp/pear/
COPY . /var/www-data
COPY ./deploy/php.ini /usr/local/etc/php/conf.d/local.ini
COPY ./deploy/nginx.conf /etc/nginx/nginx.conf
RUN mv .env.production .env
RUN chmod +rwx /var/www-data
RUN chmod -R 777 /var/www-data
#RUN npm install -g npm#latest
RUN npm install
RUN npm run prod
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer install --working-dir="/var/www-data"
RUN composer dump-autoload --working-dir="/var/www-data"
RUN php artisan optimize
EXPOSE 8080
RUN ["chmod", "+x", "./deploy/post_deploy.sh"]
CMD [ "sh", "./deploy/post_deploy.sh" ]

Docker The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 112695A0E562B32A

I'm running docker-compose up to build my project and when it goes through the update of container dependencies it throws me the following error.
Dockerfile:
FROM php:7.2.17-apache-stretch
RUN mkdir /var/www/html/public /etc/apache2/ssl
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash
RUN apt-get update && \
apt-get install -y \
zip unzip git nodejs libmcrypt-dev libxml2-dev libpng-dev libzmq3-dev libzip-dev libkrb5-dev libc-client-dev \
libnotify-bin zlib1g-dev libicu-dev libmagickwand-dev libmagickcore-dev && \
rm -r /var/lib/apt/lists/* && \
pecl install dbase-7.0.0beta1 imagick
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-configure zip --with-libzip && \
docker-php-ext-install pdo pdo_mysql soap gd imap && \
docker-php-ext-install zip && \
docker-php-ext-enable dbase imagick
COPY --from=composer /usr/bin/composer /usr/local/bin/composer
COPY certificates/ /etc/apache2/ssl/
RUN sed -i "s|DocumentRoot /var/www/html|DocumentRoot /var/www/html/public|g" /etc/apache2/sites-available/000-default.conf && \
echo "upload_max_filesize = 20M" >> /usr/local/etc/php/conf.d/docker-php-conf.ini && \
touch /etc/apache2/sites-enabled/000-default-ssl.conf && \
echo "<VirtualHost *:443>\n \
DocumentRoot \"/var/www/html/public\"\n \
ServerName localhost\n \
SSLEngine on\n \
SSLCertificateFile \"/etc/apache2/ssl/server.pem\"\n \
SSLCertificateKeyFile \"/etc/apache2/ssl/server.key\"\n \
</VirtualHost>" >> /etc/apache2/sites-enabled/000-default-ssl.conf
RUN a2enmod rewrite headers && \
a2enmod ssl
RUN service apache2 restart
docker-compose.yaml:
version: '3.5'
services:
debito:
build:
context: '.'
container_name: debito
volumes:
- .:/var/www/html
ports:
- 32770:80
- 32990:443
networks:
backend:
aliases:
- decreditos
redis:
container_name: debito-redis
image: redis:5
ports:
- 6383:6379
networks:
backend:
aliases:
- decreditos
networks:
backend:
name: decreditos
If someone can help me I would really appreciate it since I've been wanting to find this for a long time and I can't find the solution

Docker file installing wrong php

I have a laravel/php docker image that I updated to PHP 8.1 - I am now trying to go back to our project version 7.3 and won't work.
here's my YAML
###############################################################################
# Generated on forwardforce.io #
###############################################################################
version: "3.1"
services:
postgres:
image: postgres:11.1-alpine
container_name: mtn-postgres
working_dir: /application
volumes:
- db:/var/lib/postgresql/data
- .:/application
ports:
- 5001:5432
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD=root
- POSTGRES_DB=forge
webserver:
image: nginx:alpine
container_name: mtn-webserver
working_dir: /application
volumes:
- .:/application
- ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8091:80"
tty: true
php-fpm:
build: phpdocker/php-fpm
container_name: mtn-php-fpm
working_dir: /application
environment:
XDEBUG_CONFIG: "remote_host=docker.for.mac.host.internal"
PHP_IDE_CONFIG: "serverName=MTN-Docker"
image: php:7.2-alpine
volumes:
- .:/application
- ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
volumes:
db:
and here's my Dockerfile
FROM php:7.4-fpm-alpine
WORKDIR "/application"
# Fix debconf warnings upon build
ARG DEBIAN_FRONTEND=noninteractive
# Install git
RUN apt-get update \
&& apt-get -y install libpng-dev \
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install selected extensions and other stuff
RUN apt-get update \
&& apt-get -y --no-install-recommends install php7.2-pgsql php7.2-gd php-xdebug php-ssh2 \
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install git
RUN apt-get update \
&& apt-get -y install git \
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install php-imagick
RUN apt-get update \
&& apt-get -y install php-imagick \
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
# Install Node.js, Yarn and required dependencies
RUN apt-get update \
&& apt-get install -y curl gnupg build-essential \
&& curl --silent --location https://deb.nodesource.com/setup_10.x | bash - \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get remove -y --purge cmdtest \
&& apt-get update \
&& apt-get install -y nodejs yarn \
# remove useless files from the current layer
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/lib/apt/lists.d/* \
&& apt-get autoremove \
&& apt-get clean \
&& apt-get autoclean
RUN npm install -g cordova ionic
RUN npm i -D -E -g #angular/cli
I have deleted docker cache & containers and ran:
docker-compose up -d --force-recreate --build
But I do see "59bf1c3509f3 Already exists " in the build while it's running. And after it's finished I have the latest version of PHP 8.13
So could it be a different cache somewhere else I am not clearing? Or how can I force install of PHP 7.2 o 7.3
apt is the package manager for Debian based distribution. Use apk to manage software packages on Alpine Linux. See How to use this image.

Docker executor failing for Nginx and php build

Hi I am trying to setup docker on my new system and trying to make the Laravel projects work using docker. In such a case I am trying to build an image using the following Dockerfile which would install the Nginx and the php. I am using M1 apple silicon MacBook and I am facing some issues when I am trying to build it.
My Dockerfile
FROM ubuntu:16.04
RUN apt-get update \
&& apt-get install -y locales \
&& locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
RUN apt-get update \
&& apt-get install -y nginx curl zip unzip git software-properties-common supervisor \
&& add-apt-repository -y ppa:ondrej/php \
&& apt-get update \
&& apt-get install -y php7.0-fpm php7.0-cli php7.0-mcrypt php7.0-gd php7.0-mysql \
php7.0-pgsql php7.0-imap php-memcached php7.0-mbstring php7.0-xml php7.0-curl \
php7.0-sqlite3 php7.0-xdebug \
&& php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
&& mkdir /run/php \
&& apt-get remove -y --purge software-properties-common \
&& apt-get -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& echo "daemon off;" >> /etc/nginx/nginx.conf
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
COPY default /etc/nginx/sites-available/default
COPY php-fpm.conf /etc/php/7.0/fpm/php-fpm.conf
EXPOSE 80
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]
I am getting the following error when I am trying to build it.
executor failed running [/bin/sh -c apt-get update && apt-get install -y nginx curl zip unzip git software-properties-common supervisor && add-apt-repository -y ppa:ondrej/php && apt-get update && apt-get install -y php7.0-fpm php7.0-cli php7.0-mcrypt php7.0-gd php7.0-mysql php7.0-pgsql php7.0-imap php-memcached php7.0-mbstring php7.0-xml php7.0-curl php7.0-sqlite3 php7.0-xdebug && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer && mkdir /run/php && apt-get remove -y --purge software-properties-common && apt-get -y autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && echo "daemon off;" >> /etc/nginx/nginx.conf]: exit code: 100
So to fix the problem I had to install the extensions of the php which were available. So in such a case I tried to install the extensions of php7.4 and below is the docker-compose file
version: '2'
services:
app:
build:
context: ./docker/app
dockerfile: Dockerfile
image: ebdaa-delivery.test.com/app
volumes:
- .:/var/www/html
ports:
- "81:80"
networks:
- sdnet
node:
build:
context: ./docker/node
dockerfile: Dockerfile
image: ebdaa-delivery.test.com/node
volumes:
- .:/var/www/html
networks:
- sdnet
mysql:
image: mariadb:10.5
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: "ecom"
MYSQL_USER: "root"
MYSQL_PASSWORD: "root"
volumes:
- mysqldata:/var/lib/mysql
networks:
- sdnet
redis:
image: redis:alpine
volumes:
- redisdata:/data
networks:
- sdnet
networks:
sdnet:
driver: "bridge"
volumes:
mysqldata:
driver: "local"
redisdata:
driver: "local"

"docker-compose up" Error : can not start service php: OCI runtime create failed: container_linux.go:345

I have installed docker on ubuntu and mac os. "docker-composer up" command works as expected on ubuntu and mac.
But on windows 8, I have installed docker toolbox and run "docker-compose up" command. I'm getting error while creating php-container.
Below is the screenshot of error:
Below is the docker-compose.yml file
version: "3.2"
services:
php:
build: './php/'
container_name: php-container
networks:
- backend
volumes:
- ./code/:/var/www/html/
- ./php/config/php.ini:/usr/local/etc/php/conf.d/php.ini
- ./php/config/mcrypt.so:/usr/local/lib/php/extensions/no-debug-non-zts-20151012/mcrypt.so
links:
- redis:redis
nginx:
container_name: nginx-container
image: nginx:latest
depends_on:
- php
- mysql
ports:
- "80:80"
networks:
- frontend
- backend
volumes:
- ./code/:/var/www/html/
- ./site.conf:/etc/nginx/conf.d/default.conf
links:
- php
mysql:
image: mysql:5.6.40
container_name: mysql-container
networks:
- backend
environment:
- MYSQL_ROOT_PASSWORD=password
volumes:
- /var/lib/postgresql/data
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin-container
networks:
- backend
depends_on:
- mysql
links:
- mysql:mysql
ports:
- 8088:80
environment:
PMA_HOST: mysql
MYSQL_USERNAME: abcxyz
MYSQL_ROOT_PASSWORD: 321654987
networks:
frontend:
backend:
Below is the dockerfile for php
FROM php:7.0.32-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN docker-php-ext-install mysqli
RUN pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
RUN apt-get -qq update && apt-get -qq -y install \
automake \
cmake \
g++ \
git \
libicu-dev \
libmagickwand-dev \
libpng-dev \
librabbitmq-dev \
libreadline-dev \
pkg-config \
ssh-client \
supervisor \
zlib1g-dev \
&& docker-php-ext-install \
bcmath \
gd \
intl \
opcache \
pdo_mysql \
sockets \
zip \
&& git clone git://github.com/alanxz/rabbitmq-c.git \
&& cd rabbitmq-c \
&& mkdir build && cd build \
&& cmake -DENABLE_SSL_SUPPORT=OFF .. \
&& cmake --build . --target install \
&& pecl install amqp imagick xdebug igbinary \
&& docker-php-ext-enable amqp imagick xdebug igbinary \
&& version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
&& curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \
&& mkdir -p /tmp/blackfire \
&& tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire \
&& mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \
&& printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini \
&& curl -A "Docker" -L https://blackfire.io/api/v1/releases/client/linux_static/amd64 | tar zxp -C /tmp/blackfire \
&& mv /tmp/blackfire/blackfire /usr/bin/blackfire \
&& rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y \
libmcrypt-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN apt-get install -y libxslt-dev
RUN apt-get install -y zlibc
RUN docker-php-ext-install xsl
RUN curl -s https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
Same error here...
In my case in the docker-compose.yml file
apache:
build: '.\apache\'
container_name: apache-container
depends_on:
- php
- mysql
networks:
- frontend
- backend
ports:
- "80:80"
volumes:
- .\public_html\:/var/www/html/
- .\apache\demo.apache.conf:/usr/local/apache2/conf/demo.apache.conf
- .\apache\custom.conf:/usr/local/apache2/conf/test.conf
In the last line - .\apache\custom.conf:/usr/local/apache2/conf/test.conf i'm copying custom conf to test conf in docker. which is working as expected.
But when I change the test.conf to httpd.conf and run docker-compose up , the same error occur as shown in above screenshot in the question.
Error:
Error screenshot
So, If I check files on apache container, I can see test.conf file also there is httpd.conf file, but when I trying to replace httpd.conf file it is showing error.

Categories