我试图创建两个实例:一个MySQL服务器和一个Samba服务器。我想将文件从Samba服务器共享到MySQL服务器。正如我从
docs
,Docker提供了可以在CIFS协议下工作的命名卷。正如我所理解的,在Docker Compose中,卷是在构建的基础上创建的。我怎样才能懒散地初始化它?
例如,我有给定的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/
我希望Docker根据使用指定的依赖项进行相应的挂载
depends_on
。但是,正如您在下面看到的,我收到了来自守护进程的错误消息:
â 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