Error Building PHP Dockerfile - cli symfony installer command - php

I have the following issue, I wuould to build docker container with the following services:
php nginx Database.
I tried to figure out what is the problem, but I couldn't.
By the way I used already this docker configuration in other projects before weeks ago and it did work. But now it shows me an error.
Thanks a lot for help.
so when I run docker-compose up -d --build
it shows me the following erro:
The Dockerfile it like this:
FROM php:8.1-fpm
RUN apt update \
&& apt install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip \
&& docker-php-ext-install intl opcache pdo pdo_mysql \
&& pecl install apcu \
&& docker-php-ext-enable apcu \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip
WORKDIR /var/www/newApp
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN curl -sS https://get.symfony.com/cli/installer | bash
RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony
RUN git config --global user.email "myEmail#text.com" \
&& git config --global user.name "test"
EXPOSE 9000
CMD ["php-fpm"]
The docker-compose.yml
version: '3.3'
services:
database:
container_name: database-newApp
image: mysql:8.0
restart: always
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: alsbls
MYSQL_DATABASE: newApp
MYSQL_USER: alsbls
MYSQL_PASSWORD: alsbls
ports:
- '4306:3306'
volumes:
- ./mysql:/var/lib/mysql
php:
container_name: php-newApp
build:
context: ./php
ports:
- '9000:9000'
volumes:
- ./app:/var/www/newApp
depends_on:
- database
nginx:
container_name: nginx-newApp
image: nginx:stable-alpine
ports:
- '8080:80'
volumes:
- ./app:/var/www/newApp
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- database

Related

PHP Pest (with Laravel) tests running very slow in OSX Docker

I was developing an app locally using Laravel. For testing I was using Pest and tests were running fast, really fast. That was until I decided to Dockerize my app, now tests are running pretty slow.
What it used to run in 3 seconds now it's running in over a minute.
Here's my Dockerfile:
FROM php:8.1.12-fpm
ARG uid=1000
ARG user=macgiver
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# Install and enable xDebug
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install php modules required by laravel.
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# Create system user to run Composer and Artisan commands.
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user
# Install composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Set working directory
WORKDIR /var/www
USER $user
and this is my docker-compose:
version: "3.9"
services:
app:
build:
context: ./
dockerfile: Dockerfile
image: dmc
container_name: dmc-app
restart: unless-stopped
working_dir: /var/www/
depends_on:
- db
- nginx
volumes:
- ./:/var/www/
- ./docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
- ./docker/php/conf.d/error_reporting.ini:/usr/local/etc/php/conf.d/error_reporting.ini
expose:
- "9003"
networks:
- dmc-net
nginx:
image: nginx:1.23.2-alpine
container_name: dmc-nginx
restart: unless-stopped
ports:
- "8000:80"
volumes:
- ./:/var/www
- ./docker-compose/nginx:/etc/nginx/conf.d
networks:
- dmc-net
db:
image: mysql:8.0.31
container_name: dmc-db
restart: unless-stopped
# using 3307 on the host machine to avoid collisions in case there's a local MySQL instance installed already.
ports:
- "3307:3306"
# use the variables declared in .env file
environment:
MYSQL_HOST: ${DB_HOST}
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: abcd1234
MYSQL_USER: ${DB_USERNAME}
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- ./docker-compose/mysql:/docker-entrypoint-initdb.d
- mysql-data:/var/lib/mysql
networks:
- dmc-net
networks:
dmc-net:
driver: bridge
volumes:
mysql-data:
Any ideas?

Symfony- docker container Could not open input file: bin/bash

I started my Symfony 6 project with Docker successfully.
I have a problem when accessing the PHP container and trying to run php bin/console doctrine:migrations.
The error:
Could not open input file: bin/console
My steps:
docker ps //checked php container name
docker exec -it php_container_name /bin/bash //entered with success
Then I am in container like;
root#2a9a3e61c23b:/var/www/html#
And when entering the above command, the error above is shown.
Docker file:
FROM php:8.1-fpm
RUN apt-get update && apt-get install -y \
git \
unzip \
libicu-dev \
libpq-dev \
wget
# Installing Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && composer --version
RUN apt-get -y install cron default-mysql-client
RUN docker-php-ext-install pdo pdo_mysql pdo_pgsql
and docker .yml file:
version: '3'
services:
nginx:
image: nginx:1.17
ports:
- "80:80"
volumes:
- "./docker-configs/nginx.conf:/etc/nginx/conf.d/default.conf"
- ".:/app:cached"
php:
build:
context: ./docker-configs/php
volumes:
- "./docker-configs/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- ".:/app:cached"
environment:
PHP_IDE_CONFIG: "serverName=Docker"
db:
image: mysql:5.7
platform: linux/amd64
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: db
MYSQL_USER: root
MYSQL_PASSWORD: root
ports:
- 3306:3306
volumes:
- ./mysql-data:/var/lib/mysql
postgresdata:

Problem in docker images it is not starting

I made in my project nginx, mysql, phpMyadmin, encore and php images.
Just php and encore dosent work, they are successed built, but the are with red color.
The directory of the project:
that is my docker-compose.yml:
version: '3.3'
services:
database:
container_name: database
image: mysql:8.0
restart: always
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: alsbls
MYSQL_DATABASE: infoSystem
MYSQL_USER: alsbls
MYSQL_PASSWORD: alsbls
ports:
- '4306:3306'
volumes:
- ./mysql:/var/lib/mysql
php:
container_name: php
restart: always
build:
context: ./php
ports:
- '9000:9000'
volumes:
- ./app:/var/www/infoSystem
depends_on:
- database
nginx:
container_name: nginx
image: nginx:stable-alpine
restart: always
ports:
- '8080:80'
volumes:
- ./app:/var/www/infoSystem
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- database
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
environment:
PMA_HOST: database
PMA_USER: alsbls_root
PMA_PASSWORD: alsbls_root
ports:
- "8081:81"
encore:
container_name: encore
restart: always
build:
context: ./php
volumes:
- ./:/var/www/html
That is my Dockerfile:
FROM php:8.0-fpm
RUN apt update \
&& apt install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip \
&& docker-php-ext-install intl opcache pdo pdo_mysql \
&& pecl install apcu \
&& docker-php-ext-enable apcu \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip
WORKDIR /var/www/infoSystem
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN curl -sS https://get.symfony.com/cli/installer | bash
RUN mv /root/.symfony/bin/symfony /usr/local/bin/symfony
RUN git config --global user.email "devojob97#gmail.com" \
&& git config --global user.name "alsbls"
FROM node:12.10.0
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint
RUN ["chmod", "+x", "/usr/local/bin/entrypoint"]
ENTRYPOINT ["/usr/local/bin/entrypoint"]
USER node
that is the entrypoint.sh in the same dir of Dockerfile:
#!/bin/bash
# Prevent container from shutting down
while true; do sleep 3600; done
I didn't receive any error message on the terminal.
Maybe some one now the issues.
Best regards
I saw in the docker log of the encore image the following error:
standard_init_linux.go:190: exec user process caused "no such file or directory" - Docker
And then I tried to use the following command outside of the container:
dos2unix your-file.sh
This tutorial helped me to solve it:

ERROR: Service 'php' failed to build : Build failed

docker-compose.yml
version: '3.8'
services:
database:
image: mysql
container_name: database
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- ./mysql:/var/lib/mysql
ports:
- '3306:3306'
php-apache:
container_name: php-apache
build:
context: ./php
ports:
- '8080:80'
volumes:
- ./src:/var/www/laravel_doc
- ./apache/default.conf:/etc/apache2/sites-enabled/000-default.conf
depends_on:
- database
Dockerfile
FROM php:7.4-apache
RUN apt-get update && apt-get install -y libmcrypt-dev \
mysql-client libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
WORKDIR /var/www/laravel_doc
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

'mysql: not found', trying to connect a laravel, mysql and nginx in docker container

Ubuntu 20.04
Docker version 19.03.14
docker-compose version 1.25.0
I'm trying to figure out why i'm getting an error related to mysql. The steps i did:
Clone my laravel project
docker-compose build
docker-compose up -d
docker-compose exec app php artisan key:generate
docker-compose exec app php artisan config:cache
docker-compose exec app php artisan migrate
in the last one i get the following error:
Migration table created successfully.
Loading stored database schema: /var/www/database/schema/mysql-schema.dump
Symfony\Component\Process\Exception\ProcessFailedException
The command "mysql --user="${:LARAVEL_LOAD_USER}" --password="${:LARAVEL_LOAD_PASSWORD}" --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --database="${:LARAVEL_LOAD_DATABASE}" < "${:LARAVEL_LOAD_PATH}"" failed.
Exit Code: 127(Command not found)
Working directory: /var/www
Output:
================
Error Output:
================
sh: 1: mysql: not found
at vendor/symfony/process/Process.php:257
253▕ */
254▕ public function mustRun(callable $callback = null, array $env = []): self
255▕ {
256▕ if (0 !== $this->run($callback, $env)) {
➜ 257▕ throw new ProcessFailedException($this);
258▕ }
259▕
260▕ return $this;
261▕ }
+19 vendor frames
20 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
My files:
docker-compose.yml
version: '3.7'
services:
# The Application
app:
build:
context: .
dockerfile: docker-files/app.dockerfile
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
volumes:
- ./:/var/www
- ./docker-files/php/local.ini:/usr/local/etc/php/conf.d/local.ini
env_file: '.env'
networks:
- app-network
# The Web Server
nginx:
container_name: nginx
restart: unless-stopped
tty: true
build:
context: .
dockerfile: docker-files/web.dockerfile
volumes:
- ./:/var/www
- ./docker-files/nginx/conf.d/:/etc/nginx/conf.d/
ports:
- "8990:80"
- "443:443"
networks:
- app-network
# The Database
db:
container_name: db
restart: unless-stopped
tty: true
image: mysql:5.7
volumes:
- dbdata:/var/lib/mysql/
- ./docker-files/mysql/my.cnf:/etc/mysql/my.cnf
environment:
MYSQL_DATABASE: maindbs
MYSQL_USER: root
MYSQL_PASSWORD: 123456
MYSQL_ROOT_PASSWORD: 123456
ports:
- "3306:3306"
networks:
- app-network
#Volumes
volumes:
dbdata:
driver: local
#Docker Networks
networks:
app-network:
driver: bridge
app.dockerfile
FROM php:7.4-fpm
COPY composer.lock composer.json /var/www/
COPY database /var/www/database
WORKDIR /var/www
# Install dependencies
RUN apt-get update && apt-get install -y \
build-essential \
libpng-dev \
libzip-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install extensions
RUN docker-php-ext-install pdo_mysql zip exif pcntl
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Copy application folder
COPY . /var/www
RUN chown -R www-data:www-data \
/var/www/storage \
/var/www/bootstrap/cache
RUN php artisan optimize
EXPOSE 9000
CMD ["php-fpm"]
web.dockerfile
FROM nginx:alpine
ADD docker-files/nginx/conf.d/app.conf /etc/nginx/conf.d/default.conf
COPY public /var/www/public
.env
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=maindbs
DB_USERNAME=root
DB_PASSWORD=123456
I can connect to laravel app using 127.0.0.1:8990
You don't have mysql client in the container that tries to execute mysql command.
Add mysql via the Dockerfile.
RUN apt-get update && apt-get install -y mysql-client && rm -rf /var/lib/apt

Categories