Docker: PhpMyAdmin has an upload limit of 2048KiB - php

i have a docker-compose.yml that looks like this:
webserver:
build: ./_docker/php
ports:
- 80:80
links:
- mysql
volumes_from:
- app
mysql:
image: mysql:5.7
environment:
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_USER: "${DB_USER}"
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PW}"
MYSQL_PASSWORD: "${DB_PW}"
volumes:
- ./_docker/data/db:/docker-entrypoint-initdb.d
volumes_from:
- data
data:
image: mysql:5.7
volumes:
- /var/lib/mysql
command: "true"
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8080:80
links:
- mysql
environment:
PMA_HOST: mysql
app:
image: tianon/true
volumes:
- .:/var/www/public_html
Dockerfile looks like this:
FROM php:7.0-apache
#php:7.2.2-apache
#php:5.6.33-apache
COPY php.ini /usr/local/etc/php/
COPY 000-default.conf /etc/apache2/sites-available/
RUN a2enmod rewrite
RUN a2enmod expires
RUN a2enmod headers
RUN apt-get update
RUN apt-get install -y zlib1g-dev libxml2-dev libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng12.0 imagemagick
RUN docker-php-ext-install mysqli zip soap
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install gd
# Install opcache
RUN docker-php-ext-install opcache
and the php ini like this:
max_input_vars = 1500
max_execution_time = 300
post_max_size=50M
upload_max_filesize=50M
when i start the container i have my webserver located on http://localhost.
i put an index.php with a phpinfo(); inside it and it shows, that the php.ini works.
When i open http://localhost:8080 and login to PMA it shows me that my upload limit i set to 2048KiB.
Where can i change this?
Thanks in advance!

Use like this UPLOAD_LIMIT env in docker. This is from my docker-compose.yml. Default value for UPLOAD_LIMIT is 2048K which is 2048KiB. Setting value to 300M increases it to 300MiB.
Reference: https://github.com/phpmyadmin/docker#environment-variables-summary
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: 'php7.3-phpmyadmin'
restart: 'always'
links:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
UPLOAD_LIMIT: 300M
ports:
- '8082:80'
volumes:
- /sessions

I implemented UPLOAD_LIMIT ENV variable in
https://github.com/phpmyadmin/docker/pull/261/files#diff-80edf79b0f382a3c6e871ac209ffd6abR57

you need to use UPLOAD_LIMIT inside enviroment, and you need to specify values with = sign, like example: UPLOAD_LIMIT=300M
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: somerandompasswordgenerated
ports:
- 3306:3306
phpmyadmin:
image: phpmyadmin
restart: always
ports:
- 8080:80
environment:
- PMA_ARBITRARY=1
- UPLOAD_LIMIT=300M

UPLOAD_LIMIT: 500M
mariadb:
image: mariadb:latest
container_name: w-mariadb
restart: always
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: db_name
MYSQL_USER: root
MYSQL_PASSWORD: db_password
MYSQL_ROOT_PASSWORD: db_password
volumes:
- 'w-mariadb:/var/lib/mysql'
networks:
- w-network
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: w-phpmyadmin
links:
- mariadb
environment:
MYSQL_ROOT_PASSWORD: db_password
PMA_HOST: mariadb
UPLOAD_LIMIT: 500M
restart: always
ports:
- '8383:80'
networks:
- w-network

In my case I couldn't fix it with UPLOAD_LIMIT, so without further debugging I needed a quick solution even if it's temporary:
open phpmyadmin container terminal: docker exec -it container_name bash
If you don't have vim or nano editor install one: apt-get update, apt-get install vim
create config file: vi /usr/local/php/conf.d/myconf.ini
with this content: post_max_size=50M upload_max_filesize=50M
restart container
Remember these changes will be gone when container is recreated, it's just a temporary solution. Try working with UPLOAD_LIMIT as suggested in previous answer.
UPDATE
Tried again with setting upload_limit environment, but still without luck, so found another solution:
created a file say uploads.ini with this content:
post_max_size=50M
upload_max_filesize=50M
and link it to container volume :
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:db
ports:
- 8084:80
volumes:
- ./uploads.ini:/usr/local/etc/php/conf.d/php-phpmyadmin.ini
environment:
MYSQL_ROOT_PASSWORD: something
#UPLOAD_LIMIT: 3000000000 <-- didn't work

the following worked very well.
My docker-compose.yml contains this:
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: some-name
env_file:
- phpmyadmin.env
depends_on:
- mariadb
volumes:
The following entry was added to the phpmyadmin.env: UPLOAD_LIMIT=256MB
The larger number (Maximal: 256MiB) showed up right after the container was brought down and was back up again.

If you want to install from phpmyadmin docker image and with docker run, you can exec this.
docker run --name your-image-name -d --link mysql-docker:db --env "UPLOAD_LIMIT=256M" phpmyadmin
This works for me and enable upload to 256MB SQL file.

I edit this file :
/usr/local/etc/php/conf.d/phpmyadmin-misc.ini
and set new values :
post_max_size=64M
upload_max_filesize=64M
It works fine.

Related

I run CakePHP application in Docker and I got this message in the browser "This page isn’t working"

I have an existing CakePHP project and I want to run it with Docker,
I used the command docker compose up -d and I got those containers:
Containers List in Docker
Now Obviously, it should be work on localhost:9000 and the phpmyadmin on localhost:8083.
But only the PMA (phpmyadmin) worked, and that what I got in my browser for localhost:9000
Browser Response
So this what I am facing.
DockerFile
FROM phpdockerio/php74-fpm:latest
# Install selected extensions and other stuff
RUN apt-get update \
&& apt-get -y --no-install-recommends install php7.4-mysql php7.4-intl php7.4-mbstring php7.4-sqlite3\
&& apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
WORKDIR "/var/www/html"
docker-compose.yml
version: "3.8"
services:
nginx-proxy:
image: nginx
volumes:
- ./website:/var/www/html
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./docker/log:/var/log/nginx
- ./docker/certs:/etc/nginx/certs
- ./docker/nginx:/etc/nginx/conf.d
ports:
- 80:80
- 443:443
depends_on:
- php
- db
php:
build: ./docker/php/
image: php:fpm
ports:
- 9000:9000
container_name: talkto_php
environment:
- VIRTUAL_HOST=talkto_php.local
depends_on:
- db
volumes:
- ./website:/var/www/html
- ./docker/apache/apache2.conf:/etc/apache2/apache2.conf
db:
image: mysql:5.6.51
container_name: talkto_db
environment:
MYSQL_ROOT_PASSWORD: calltode
MYSQL_USER: talkto
MYSQL_PASSWORD: talkto
MYSQL_DATABASE: talkto
ports:
- "3306:3306"
volumes:
- talkto-data:/var/lib/mysql
- ./database/calltode_dev2.sql:/home/db.sql
pma:
image: phpmyadmin/phpmyadmin
container_name: pma
environment:
PMA_HOST: db
PMA_PORT: 3306
PMA_ARBITRARY: 1
restart: always
ports:
- 8083:80
links:
- db
volumes:
talkto-data:
It suppose to show me the contain of my CakePHP application on localhost:9000

How to run docker containers on another machine, like virtual box?

I am a new docker user, so some things may be not correctly explained.
I have a php project (on Windows 10), and I created docker containers and images for it. All project files, like html and css are located in src folder. Near src folder I created Dockerfile and docker-compose.yml, and they are working good. After that, I created tags to all my images, and uploaded them to dockerhub. I did that to be able to run my containers on another machine using images from repository. So, in virtual box I installed linux mint, and installed docker on it. Using console, I logged into my dockerhub account, and pulled all images from it. After that I copied my docker-compose.yml file from windows to linux on virtual box, and modiffied the path of images to take them directly from docker hub, and run docker-compose up command. Everything worked fine, all images were downloaded, but when I opened localhost:8000, I saw error 403 forbidden, and also I observed that automatically was created src folder, but it was empty. So, I think that error 403 appeared because there were nothing in src folder.
So, the question is: How to upload my src folder with all project files into docker image, to be able to use them on any other machines by using only docker-compose.yml and docker-compose up command (it is impoartant, because that was the condition) ?
On windows:
Docker file code:
FROM php:8.0-apache
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN apt-get update && apt-get upgrade -y
docker-compose.yml code:
version: '3.8'
services:
php-apache-environment:
container_name: myPHProject
build:
context: ./
dockerfile: Dockerfile
depends_on:
- db
volumes:
- ./src:/var/www/html/
ports:
- 8000:80
db:
container_name: db
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: MY_DATABASE
MYSQL_USER: MYSQL_USER
MYSQL_PASSWORD: MYSQL_PASSWORD
ports:
- "9906:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- '8080:80'
restart: always
environment:
PMA_HOST: db
depends_on:
- db
docker-compose.yml that I used on linux(without dockerfile, it is important, because that was the condition):
version: '3.8'
services:
php-apache-environment:
container_name: myPHProject
image: <my dockerhub name>/project-lab4-php-apache-environment
build:
context: ./
depends_on:
- db
volumes:
- ./src:/var/www/html/
ports:
- 8000:80
db:
container_name: db
image: <my dockerhub name>/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: MY_DATABASE
MYSQL_USER: MYSQL_USER
MYSQL_PASSWORD: MYSQL_PASSWORD
ports:
- "9906:3306"
phpmyadmin:
image: <my dockerhub name>/phpmyadmin
ports:
- '8080:80'
restart: always
environment:
PMA_HOST: db
depends_on:
- db

PHP 8.0 - Apache - phpMyAdmin - Docker Image

I am creating an image for a php8 project run on apache, and work with phpMyAdmin, I have my Dockerfile as follow :
FROM php:8.0-apache
RUN apt-get update -y && apt-get install -y libmariadb-dev && docker-php-ext-install mysqli && docker-php-ext-install pdo_mysql
WORKDIR /var/www/html
And my docker-compose.yml as follow :
services:
php-apache-environment:
container_name: php-apache
image: php:8.0-apache
volumes:
- ./php/src:/var/www/html/
ports:
- 8000:80
db:
container_name: db
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: MY_DATABASE
MYSQL_USER: MYSQL_USER
MYSQL_PASSWORD: MYSQL_PASSWORD
ports:
- "9906:3306"
phpmyadmin:
image: phpmyadmin:latest
ports:
- '8080:80'
restart: always
environment:
PMA_HOST: db
depends_on:
- db
For me, all is good, but when I run "docker compose up --build", container is launched, but he has not install "mysqli" and "pdo_mysql" like I request in the Dockerfile.
But, if I log in by CLI to the PHP container, and that I run docker-php-ext-install mysqli and docker-php-ext-install pdo_mysql, it works, and I just have to restart the PHP container.
But, I dont know why, I can't install it from the start ?
Thank you for your help.
Thans to Lety comment, we juste need to change the line 4 of docker-compose.yml
by :
build: ./php
(to indicate the directory where the Dockerfile is) and it works.
Resume :
Dont change the Dockerfile
. Change the docker-compose.yml by :
version: '3.8'
services:
php-apache-environment:
container_name: php-apache
build: ./php
volumes:
- ./php/src:/var/www/html/
ports:
- 8000:80
db:
container_name: db
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: MY_DATABASE
MYSQL_USER: MYSQL_USER
MYSQL_PASSWORD: MYSQL_PASSWORD
ports:
- "9906:3306"
phpmyadmin:
image: phpmyadmin:latest
ports:
- '8080:80'
restart: always
environment:
PMA_HOST: db
depends_on:
- db

Xdebug doesn't get enabled in docker container

I'm using richovery/nginx-php-fpm. Everything works fine but I've faced with a problem on enabling the xdebug. As I read the documentation the xdebug is installed by default in the container and only thing to enabling it is adding ENABLE_XDEBUG= 1 environment variable to docker-compose.yml file so I tried it but no result! So I decided to enable it manually in my Dockerfile by running the command docker-php-ext-enable xdebug. While compiling I see some execution results in terminal which are associated with this job however when I dump the phpinfo() I can't see anything related to the xdebug. Also the docker-php-ext-xdebug.ini does not exists in the /usr/local/etc/php/conf.d/ directory. And the funny part is when I go into the container and run the command docker-php-ext-enable xdebug and restart the php-fpm it works like a charm.
Here is my docker-compose.yml file:
version: "3.1"
services:
admin_panel_web:
build: ./nginx
ports:
- 81:80
volumes:
- ../src:/var/www
working_dir: /var/www
admin_panel_mysql:
build: ./mysql
ports:
- 3307:3306
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: admin_panel
MYSQL_USER: tohid
MYSQL_PASSWORD: 123456
volumes:
- ../data/mysql:/var/lib/mysql
- ./mysql/conf:/etc/mysql/conf.d
admin_panel_redis:
build: ./redis
ports:
- 6380:6379
volumes:
- ../data/redis:/data
And my Dockerfile
FROM richarvey/nginx-php-fpm:1.8.2
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Configure nginx
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
ADD conf/nginx-site.conf /etc/nginx/sites-available/default.conf
ADD conf/nginx-site-ssl.conf /etc/nginx/sites-available/default-ssl.conf
RUN docker-php-ext-enable xdebug
ADD conf/xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

docker compose - add python to LAMP

In linux I build a blog application that is based on mysql, apache2 and php. But I use some python for it. The python is for adapting python Pygments that is described there https://davidwalsh.name/pygments-php-wordpress .
I prepared docker compose stage that works fine but python does not work in it. How to add python to docker compose?
Here are my files:
root#debian:/usr/local/share/a22php7m55# cat docker-compose.yml
version: "2.1"
services:
apachephp:
build: ./a22php7/
ports:
- 8888:80
volumes:
- "/etc/passwd:/etc/passwd:ro"
- "/etc/group:/etc/group:ro"
- "${PROJECT_ROOT}:/var/www/html"
networks:
- database
- server
depends_on:
- mysql
container_name: ap47
mysql:
image: mariadb:5.5
volumes:
- ${MYSQL_DATA}:/var/lib/mysql
networks:
- database
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
MYSQL_DATABASE: "${MYSQL_NAME}"
MYSQL_USER: "${MYSQL_USERNAME}"
MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
container_name: maria47
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8080:80
networks:
- database
depends_on:
- mysql
environment:
PMA_HOST: mysql
container_name: pma47
volumes:
mariadb:
networks:
database:
server:
root#debian:/usr/local/share/a22php7m55# cat a22php7/
root#debian:/usr/local/share/a22php7m55# cat a22php7/Dockerfile
FROM php:7.1.3-apache
RUN docker-php-ext-install pdo pdo_mysql
root#debian:/usr/local/share/a22php7m55#
Looking at the base image for php:7.1.3-apache we see it's built on debian:jessie so we can install python, pip and pygments by adding these lines to your Dockerfile:
RUN apt-get update && apt-get install -y python python-pip
RUN pip install pygments

Categories