Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

mstdmstd's avatar

Setting Docker for laravel app I got errors in "compose/cli/main.py"

Hello! In my kubunru 18.04 I try to run docker for my laravel application

$ docker --version 
Docker version 17.12.1-ce, build 7390fc6

I have 3 files: .env :

# PATHS

DB_PATH_HOST=./databases

APP_PATH_HOST=./votes

APP_PTH_CONTAINER=/var/www/html/

docker-compose.yml :

version: '3'

services:

    web:
        build: ./web/Dockerfile.yml
        environment:
            - APACHE_RUN_USER=www-data
        volumes:
            - ${DB_PATH_HOST}:${APP_PTH_CONTAINER}
        ports:
            - 8080:80
        working_dir: ${APP_PTH_CONTAINER}
        
        

    db:
        image: mysql
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
        volumes:
            - ${DB_PATH_HOST}:/var/lib/mysql

    adminer:
        image: adminer
        restart: always
        ports:
            - 8080:8080
            
            
    composer:
        image: composer:1.6
        volumes:
            - ${DB_PATH_HOST}:${APP_PTH_CONTAINER}
        working_dir: ${APP_PTH_CONTAINER}
        command: composer install        

/web/Dockerfile.yml :

FROM php:7.2-apache

RUN docker-php-ext-install \
    pdo_mysql \
    && a2emod \
    rewrite

Compiling, I have error:

serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker-compose up --build
Building web
Traceback (most recent call last):
  File "bin/docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 71, in main
  File "compose/cli/main.py", line 127, in perform_command
  File "compose/cli/main.py", line 1052, in up
  File "compose/cli/main.py", line 1048, in up
  File "compose/project.py", line 466, in up
  File "compose/service.py", line 329, in ensure_image_exists
  File "compose/service.py", line 1047, in build
  File "site-packages/docker/api/build.py", line 142, in build
TypeError: You must specify a directory to build in path
[6769] Failed to execute script docker-compose

I know that *.py that is python language files, but I do not use python language or work with it.

How to fix it ?

Thanks!

0 likes
6 replies
mstdmstd's avatar

Thank you! I fixed error syntax, but I tried again and got error :

$ docker-compose up --build
Building webapp
Step 1/2 : FROM php:7.2-apache
 ---> a7d68dad7584
Step 2/2 : RUN docker-php-ext-install     pdo_mysql     && a2enmod     rewrite
 ---> Using cache
 ---> 519d1b33af81
Successfully built 519d1b33af81
Successfully tagged votes_docker_webapp:latest
Starting votes_docker_adminer_1 ... 
Starting votes_docker_composer_1 ... 
Starting votes_docker_adminer_1  ... error
votes_docker_db_1 is up-to-date

ERROR: for votes_docker_adminer_1  Cannot start service adminer: driver failed programming external connectivity on endpoint votes_docker_adminer_1 (6e94693ab8b1a990aaa83164df0952e8665f351618a72aStarting votes_docker_composer_1 ... done

ERROR: for adminer  Cannot start service adminer: driver failed programming external connectivity on endpoint votes_docker_adminer_1 (6e94693ab8b1a990aaa83164df0952e8665f351618a72a5531f9c3ccc18a2e3d): Bind for 0.0.0.0:8080 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

I tried to check related ports and got:

# sudo netstat -ntpl | grep 8080:8080
# sudo netstat -ntpl | grep 0.0.0.0:8080
# sudo netstat -ntpl | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      7361/docker-proxy   

How to fix it ?

mstdmstd's avatar

Looks like that was error that I had to specify other ports for adminer.

I fixed it and got next:

serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker-compose up --build
Creating network "votes_docker_default" with the default driver
Building webapp
Step 1/2 : FROM php:7.2-apache
 ---> a7d68dad7584
Step 2/2 : RUN docker-php-ext-install     pdo_mysql     && a2enmod     rewrite
 ---> Using cache
 ---> 519d1b33af81
Successfully built 519d1b33af81
Successfully tagged votes_docker_webapp:latest
Creating votes_docker_adminer_1  ... done
Creating votes_docker_composer_1 ... done
Creating votes_docker_webapp_1   ... done
Creating votes_docker_db_1       ... done
Attaching to votes_docker_adminer_1, votes_docker_composer_1, votes_docker_webapp_1, votes_docker_db_1
adminer_1   | PHP 7.2.10 Development Server started at Mon Oct 15 10:14:02 2018
composer_1  | Composer could not find a composer.json file in /var/www/html
composer_1  | To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
votes_docker_composer_1 exited with code 1
webapp_1    | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.20.0.4. Set the 'ServerName' directive globally to suppress this message
webapp_1    | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.20.0.4. Set the 'ServerName' directive globally to suppress this message
webapp_1    | [Mon Oct 15 10:14:05.281793 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
webapp_1    | [Mon Oct 15 10:14:05.281843 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
db_1        | 2018-10-15T10:14:06.541323Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
db_1        | 2018-10-15T10:14:06.541484Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.11) starting as process 1
db_1        | mbind: Operation not permitted
db_1        | mbind: Operation not permitted
db_1        | mbind: Operation not permitted
db_1        | mbind: Operation not permitted
db_1        | 2018-10-15T10:14:07.062202Z 0 [Warning] [MY-011071] [Server] World-writable config file './auto.cnf' is ignored.
db_1        | 2018-10-15T10:14:07.062581Z 0 [Warning] [MY-010107] [Server] World-writable config file './auto.cnf' has been removed.
db_1        | 2018-10-15T10:14:07.063146Z 0 [Warning] [MY-010075] [Server] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 0cd8212e-d063-11e8-8e69-0242ac140005.
db_1        | 2018-10-15T10:14:07.079020Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
db_1        | 2018-10-15T10:14:07.091951Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
db_1        | 2018-10-15T10:14:07.103829Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.infoschema@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.103896Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.103925Z 0 [Warning] [MY-010315] [Server] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.103947Z 0 [Warning] [MY-010315] [Server] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.104006Z 0 [Warning] [MY-010323] [Server] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.104034Z 0 [Warning] [MY-010323] [Server] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.104070Z 0 [Warning] [MY-010311] [Server] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.112700Z 0 [Warning] [MY-010330] [Server] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.112738Z 0 [Warning] [MY-010330] [Server] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
db_1        | 2018-10-15T10:14:07.117764Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.11'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
  1. is it mysql misconfigure ?
  2. I run it not as root.
  3. Also as I use lamp have I to stop apache and mysql before running docker-compose command ?
D9705996's avatar

Is there any reason you need to you use docker as you seem to be struggling quite a bit. If you need a development environment why not look at homestead or valet. There's an official valet for linux

https://cpriego.github.io/valet-linux/

If you need to use docker you might be better using something like

https://laradock.io/

If you are just trying to learn more about docker then you are going to have start reading the output of the commands your running and figure out what it means. E.g. you are getting mbind operation not permitted which from Google gives you some useful acvice/next steps

https://github.com/docker-library/mysql/issues/303

mstdmstd's avatar

Thank you for your feedback! I wrote mysql version in my config file and added command option:

        image: mysql:5.7.23
        command: --default-authentication-plugin=mysql_native_password  --disable-partition-engine-check

and this error was fixed. So :

  1. In other console under root I run commands(But I still not sure if I need it?)
sudo service apache2 stop
sudo service  mysql stop
  1. Under nonroot console I run with key to run in background:
docker-compose up -d 
serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker-compose down 
Stopping votes_docker_db_1      ... done
Stopping votes_docker_webapp_1  ... done
Stopping votes_docker_adminer_1 ... done
Removing votes_docker_db_1       ... done
Removing votes_docker_webapp_1   ... done
Removing votes_docker_composer_1 ... done
Removing votes_docker_adminer_1  ... done
Removing network votes_docker_default

docker-compose up -d 
Creating network "votes_docker_default" with the default driver
Creating votes_docker_webapp_1   ... done
Creating votes_docker_adminer_1  ... done
Creating votes_docker_db_1       ... done
Creating votes_docker_composer_1 ... done

I have no errors in output, but I expected as result to have vendor directory in my project, as I have in web/Dockerfile.yml :

FROM php:7.2-apache

RUN docker-php-ext-install \
    pdo_mysql \
    && a2enmod \
    rewrite

But I do not see this directory... The installation was not successful ?

I am not sure where to move next?

serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker info
Containers: 33
 Running: 2
 Paused: 0
 Stopped: 31
Images: 19
Server Version: 17.12.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9b55aab90508bd389d7654c4baf173a981477d55
runc version: 9f9c96235cc97674e935002fc3d78361b696a69e
init version: v0.13.0 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.15.0-36-generic
Operating System: Ubuntu 18.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.711GiB
Name: serge
ID: BDNU:HFWX:N6YV:IWYW:HJSU:SZ23:URPB:3FR2:7I3E:IFGK:AOLH:YRE5
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:                                                                                                                                                                                            
Experimental: false                                                                                                                                                                                
Insecure Registries:                                                                                                                                                                               
 127.0.0.0/8                                                                                                                                                                                       
Live Restore Enabled: false                                                                                                                                                                        

WARNING: No swap limit support
serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
votes_docker_webapp   latest              519d1b33af81        27 hours ago        378MB
adminer               latest              0038b45402de        4 weeks ago         81.7MB
composer              1.6                 e28b5b53ab28        4 weeks ago         154MB
php                   7.2-apache          a7d68dad7584        4 weeks ago         378MB
mysql                 5.7.23              563a026a1511        5 weeks ago         372MB
mysql                 5.7.22              6bb891430fb6        2 months ago        372MB
test2_php             latest              05534d47f926        3 months ago        84.7MB
test1_php             latest              05534d47f926        3 months ago        84.7MB
<none>                <none>              6060fcf4d103        3 months ago        81MB
php                   fpm-alpine          601d5b3a95d4        3 months ago        80.6MB
php                   apache              d9faf33e6e40        3 months ago        377MB
mysql                 latest              8d99edb9fd40        3 months ago        445MB
php                   7-fpm               854ffd8dc9d8        3 months ago        367MB
php                   7.2                 e86d9bb526ef        3 months ago        367MB
ukfx/php              apache-stretch      5958cb7c2316        4 months ago        648MB
nginx                 alpine              bc7fdec94612        4 months ago        18MB
hello-world           latest              e38bc07ac18e        6 months ago        1.85kB
composer/composer     latest              5afb0951f2a4        2 years ago         636MB
serge@serge:/mnt/_work_sdb8/wwwroot/lar/DockerApps/votes_docker$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                         PORTS                    NAMES
f8beea5dceca        mysql:5.7.23          "docker-entrypoint.s…"   6 minutes ago       Restarting (2) 6 seconds ago                            votes_docker_db_1
8309b5456dcf        adminer               "entrypoint.sh docke…"   6 minutes ago       Up 6 minutes                   0.0.0.0:8081->8080/tcp   votes_docker_adminer_1
cc644206931b        votes_docker_webapp   "docker-php-entrypoi…"   6 minutes ago       Up 6 minutes                   0.0.0.0:8080->80/tcp     votes_docker_webapp_1
  1. If I fail with docker, I will try homestead or valet or laradock.

Do you think they are more simple in use ?

Please or to participate in this conversation.