I’m trying to create two instances: a MySQL server and a Samba server. I want to share files from the Samba server to the MySQL server. As I have seen from the docs, Docker provides named volumes which can work under the CIFS protocol. In Docker Compose, the volumes are created on top of the build, as I can understand. How can I initialize it lazily?
For example i have the given docker compose:
services:
samba:
container_name: samba
env_file:
- .env
build:
dockerfile: DockerFile.samba
target: samba
args:
TOTAL_SAMBA_USERS: ${TOTAL_SAMBA_USERS}
SAMBA_USER_1: ${SAMBA_USER_1}
SAMBA_PASSWORD_1: ${SAMBA_PASSWORD_1}
SAMBA_USER_2: ${SAMBA_USER_2}
SAMBA_PASSWORD_2: ${SAMBA_PASSWORD_2}
COMMON_NAME_CA: ${COMMON_NAME_CA}
COMMON_NAME_SERVER: ${COMMON_NAME_SERVER}
COMMON_NAME_CLIENT: ${COMMON_NAME_CLIENT}
COUNTRY: ${COUNTRY}
STATE: ${STATE}
LOCALITY: ${LOCALITY}
ORGANIZATION: ${ORGANIZATION}
ORGANIZATIONAL_UNIT: ${ORGANIZATIONAL_UNIT}
EMAIL_ADDRESS: ${EMAIL_ADDRESS}
KEYSTORE_PASSWORD: ${KEYSTORE_PASSWORD}
ports:
- 445:445
- 139:139
volumes:
- ./smb.conf:/etc/samba/smb.conf
healthcheck:
test: ["CMD", "smbclient", "//localhost/cert_share", "-U", "admin%1234", "-c", "ls"]
interval: 2s
timeout: 10s
retries: 3
mysql-db:
container_name: mysql-db
env_file:
- .env
build:
dockerfile: DockerFile.mysql
target: mysql
args:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
ports:
- 3306:3306
volumes:
- data:/var/lib/cert
depends_on:
samba:
condition: service_healthy
volumes:
data:
driver_opts:
type: cifs
o: username=admin,password=1234
device: //localhost/cert_share/
I was expecting Docker to mount accordingly based on the dependencies specified with depends_on
. However, as you can see below, I receive an error message from the daemon:
✔ Container samba Created
⠋ Container mysql-db Creating 0.0s
Error response from daemon: failed to populate volume: error while mounting volume '/var/lib/docker/volumes/ssl-sample_data/_data': failed to mount local volume: mount //127.0.0.1/cert_share/:/var/lib/docker/volumes/ssl-sample_data/_data, data: username=admin,password=********: connection refused