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 ?