Can't connect to MySQL server when its on tmpfs docker mount

Viewed 26

What i am trying to achieve is to run two MySql container, one for the production and another for the Unit tests.

Unit test mysql container is mounted on tmpfs (Temporary file system) to speed up unit tests execution.

Issue is, i am not able to connect to unit test mysql container from my project container.

Docker compose file:

services:
  nginx:
    image: proj1_nginx
    container_name: proj1_nginx
    build:
      args:
        VERSION: 1.17.1
        ENVIRONMENT: local
      context: ../
      dockerfile: deployment/docker/nginx/Dockerfile
    ports:
      - 80:80
      - 443:443
    volumes:
      - ${PWD}:/web/proj1/:rw
    depends_on:
      - php
    networks:
      - default
    env_file:
      - docker.env

  php:
    image: proj1_php
    container_name: proj1
    build:
      args:
        VERSION: 7.4.14
        ENVIRONMENT: local
        NEW_SETUP: 0
      context: ../
      dockerfile: deployment/docker/php/Dockerfile
    volumes:
      -  ${PWD}:/web/proj1/:rw
    networks:
      - default
    env_file:
      - docker.env

  mariadb:
    image: mariadb
    container_name: mariadb
    build:
      context: .
      dockerfile: docker/mariadb/Dockerfile
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: proj
      MYSQL_USER: proj
      MYSQL_PASSWORD: proj
    networks:
      - default
    restart: on-failure
    volumes:
      - mariadbdata:/var/lib/mysql
    ports:
      - 3306:3306

  ts_mariadb:
    image: ts_mariadb
    build:
      context: .
      dockerfile: docker/mariadb/Dockerfile
    container_name: ts_mariadb
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: proj
      MYSQL_USER: proj
      MYSQL_PASSWORD: proj
    restart: on-failure
    volumes:
      - ts_mariadbdata:/var/lib/mysql
    ports:
      - 3307:3306
    networks:
      - default

networks:
  default:
    external:
      name: docker-network

volumes:
  mariadbdata:
    driver: local
  ts_mariadbdata:
    driver: local
    driver_opts:
      type: tmpfs
      device: tmpfs     

docker/mariadb/Dockerfile:

FROM mariadb:10.3.23

COPY ./docker/mariadb/init /docker-entrypoint-initdb.d

COPY ./docker/mariadb/docker-entrypoint.sh /usr/local/bin/
RUN chmod 0777 /usr/local/bin/docker-entrypoint.sh -R
ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 3306
CMD ["mysqld"]

docker container list:

CONTAINER ID   IMAGE       COMMAND                  CREATED             STATUS             PORTS                                      NAMES
2c779fa5cb93   ts_mariadb  "docker-entrypoint.s…"   About an hour ago   Up 38 seconds      0.0.0.0:3307->3306/tcp, :::3307->3306/tcp  ts_mariadb

199a1061e68a   mariadb     "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp  mariadb            

2b9083c86296   proj1_nginx "nginx -g 'daemon of…"   About an hour ago   Up About an hour   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   proj1_nginx

59c4572b931b   proj1_php   "/usr/local/bin/star…"   About an hour ago   Up About an hour   9000-9001/tcp                             proj1        

docker inspect ts_mariadb:

[
    {
        "Id": "2c779fa5cb93f7fd788f3705558be4b4c89e4d8d6b26fc62ffed897f807a6db1",
        "Created": "2022-09-21T05:31:41.148599262Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "mysqld"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 83184,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-09-21T06:51:15.123562836Z",
            "FinishedAt": "2022-09-21T06:51:14.551267256Z"
        },
        "Image": "sha256:7ed9b977b91f4a0a2aab7185021d042b4b6580547e2485f776c06605bda3b197",
        "ResolvConfPath": "/var/lib/docker/containers/2c779fa5cb93f7fd788f3705558be4b4c89e4d8d6b26fc62ffed897f807a6db1/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/2c779fa5cb93f7fd788f3705558be4b4c89e4d8d6b26fc62ffed897f807a6db1/hostname",
        "HostsPath": "/var/lib/docker/containers/2c779fa5cb93f7fd788f3705558be4b4c89e4d8d6b26fc62ffed897f807a6db1/hosts",
        "LogPath": "/var/lib/docker/containers/2c779fa5cb93f7fd788f3705558be4b4c89e4d8d6b26fc62ffed897f807a6db1/2c779fa5cb93f7fd788f3705558be4b4c89e4d8d6b26fc62ffed897f807a6db1-json.log",
        "Name": "/ts_mariadb",
        "RestartCount": 114,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "local_ts_mariadbdata:/var/lib/mysql:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "docker-network",
            "PortBindings": {
                "3306/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "3307"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "on-failure",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": [],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/69081a9cf763433df9d97f51f6f9bd6108b779cbac2e575a63462826aef5c06e-init/diff:/var/lib/docker/overlay2/96a752eecd5587553cc31f3c4f933c6d5e811e752eebb44c419b1d61d6c2327c/diff:/var/lib/docker/overlay2/b5111170159cedc83cd3af86786f9ca4a51369eaeb50ae539ae7de3b3d15f711/diff:/var/lib/docker/overlay2/f2b4ab65a653afd033e7aa1495e2cd1c5f85f4eaa15ecd2a87af8610f9649bb4/diff:/var/lib/docker/overlay2/5df0549939bf54b262ab08777b43406551711fdde8137a392a3f75e33d681008/diff:/var/lib/docker/overlay2/e0387ac14ce7584b009cf1afb5baee537f443a67adf0a8483d64e69700bf291c/diff:/var/lib/docker/overlay2/c681835914d4292490650ea84881bc37864b5d37f82d400931699e2061b433af/diff:/var/lib/docker/overlay2/89d0d7b632a92ca3ba756d23229ba6e1ef740636229f4aea3b8394f36816da58/diff:/var/lib/docker/overlay2/6174ba7ca8260c8828d3ece28cc1cf167e1963fac81a7acb2d423b4606051976/diff:/var/lib/docker/overlay2/0f20b6153eaf20f83eef3c2984998f52e5d715190d85ab38fdc3f8743dd8d83b/diff:/var/lib/docker/overlay2/5793b683e2c82d9a5f90cac4d2c9966afeafc0ece2140f6391936fa81032f189/diff:/var/lib/docker/overlay2/3564211678d5b34e4a4cd39d48d1dfb0231e89296798344432c134f9399945b3/diff:/var/lib/docker/overlay2/497996c64c9a37a3f67da2dcd30a843c61b8208575729bd9abd835b65db3a2f2/diff:/var/lib/docker/overlay2/f34f3c509a8e4763c314760baeccd9035eaa898a63413c02c8ef2d906434cf4f/diff:/var/lib/docker/overlay2/2d7a88c8b2ce325e7057488b0fa077183849c1969dc072545c04900ebc566340/diff:/var/lib/docker/overlay2/539afcbc658cfd7b70d83d7f76ec3a77a4c370331e8ea72357a633a86ad3f46d/diff:/var/lib/docker/overlay2/cfc8bf0fb7b51f89b9af660f9a7e97d316b2665c1d2399b834b1f4e41526d38f/diff:/var/lib/docker/overlay2/2c629a02ca198b6f9c6364c12b7a773215921d1434037c49bd303a28a4221561/diff",
                "MergedDir": "/var/lib/docker/overlay2/69081a9cf763433df9d97f51f6f9bd6108b779cbac2e575a63462826aef5c06e/merged",
                "UpperDir": "/var/lib/docker/overlay2/69081a9cf763433df9d97f51f6f9bd6108b779cbac2e575a63462826aef5c06e/diff",
                "WorkDir": "/var/lib/docker/overlay2/69081a9cf763433df9d97f51f6f9bd6108b779cbac2e575a63462826aef5c06e/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "local_ts_mariadbdata",
                "Source": "/var/lib/docker/volumes/local_ts_mariadbdata/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "rw",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "2c779fa5cb93",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "MYSQL_ROOT_PASSWORD=root",
                "MYSQL_DATABASE=fads6",
                "MYSQL_USER=fads6",
                "MYSQL_PASSWORD=fads6",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.12",
                "GPG_KEYS=177F4010FE56CA3336300305F1656F24C74CD1D8",
                "MARIADB_MAJOR=10.3",
                "MARIADB_VERSION=1:10.3.23+maria~focal"
            ],
            "Cmd": [
                "mysqld"
            ],
            "Image": "ts_mariadb",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "7943d264fd33cbb7916e877e96af8830ff35c564191d2785dd55278569633e93",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "local",
                "com.docker.compose.project.config_files": "deployment/local/docker-compose-services.yml",
                "com.docker.compose.project.working_dir": "/home/hardikr/project/fads6-infra/deployment/local",
                "com.docker.compose.service": "ts_mariadb",
                "com.docker.compose.version": "1.25.0"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "41e018da4989a11a161eba6f2160a3d9422f6f9644aeb3663dc7207810e1a77a",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "3307"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "3307"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/41e018da4989",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "docker-network": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "ts_mariadb",
                        "2c779fa5cb93"
                    ],
                    "NetworkID": "6723e9a177789f8dee904591a25dd359908f0cbbdbe7a4f788b2e7ecb6140626",
                    "EndpointID": "4cfe46336c91f81505f07695a0c1c3924cb87524baebe616f6c2ec839115af9e",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:04",
                    "DriverOpts": null
                }
            }
        }
    }
]

Inside proj1 container (mariadb mysql container connect works):

/web/proj1 $ mysql -P3307 -uroot -proot -hmariadb
ERROR 2002 (HY000): Can't connect to MySQL server on 'mariadb' (115)
/web/proj1 $ mysql -P3306 -uroot -proot -hmariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 51
Server version: 10.3.23-MariaDB-1:10.3.23+maria~focal mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

Inside proj1 container (ts_mariadb mysql container connect fails):

/web/proj1 $ mysql -P3307 -uroot -proot -hts_mariadb
ERROR 2002 (HY000): Can't connect to MySQL server on 'ts_mariadb' (115)

/web/proj1 $ mysql -P3306 -uroot -proot -hts_mariadb
ERROR 2002 (HY000): Can't connect to MySQL server on 'ts_mariadb' (115)
                                     
/web/proj1 $ mysql -P3307 -uroot -proot -hts_mariadb -protocol=tcp
ERROR 2002 (HY000): Can't connect to MySQL server on 'ts_mariadb' (115)

/web/proj1 $ mysql -P3307 -uroot -proot -h172.18.0.4
ERROR 2002 (HY000): Can't connect to MySQL server on '172.18.0.4' (115)

Inside ts_mariadb container (mysql connect works):

docker exec -u root -it ts_mariadb /bin/bash

root@2c779fa5cb93:/# mysql -P3307 -uroot -proot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.3.23-MariaDB-1:10.3.23+maria~focal mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

I have even tried executing following SQL queries inside ts_mariadb container in case its permission issue but does not seem to work:

CREATE USER 'root'@'ts_mariadb' IDENTIFIED BY 'root';
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;

Docker compose up log: https://drive.google.com/file/d/1AmSWKWhYJMbBPH4l_W-b_Cr7QswWVcVB/view?usp=sharing

Also one more thing, when i am inside ts_mariadb container, after some time it automatically gets exit from the container is it because of the tmpfs mount ?

0 Answers
Related