我有一个目录结构类似-
- Dockerfile
- docker-compose.yml
- db
- schema.sql而每个档案的内容是-
Dockerfile
FROM alpine:3.7
RUN apk update && \
apk add --no-cache docker python3 && \
apk add --no-cache --virtual .docker-compose-deps python3-dev libffi-dev openssl-dev gcc libc-dev make && \
pip3 install docker-compose && \
apk del .docker-compose-deps
ADD . .docker-compose.yml -
version: "2"
services:
test_mysql:
image: "mysql:5.7"
container_name: test_mysql_v1
volumes:
- ./db:/docker-entrypoint-initdb.d/
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- "3310:3306"schema.sql -
create database if not exists db2;当我做的时候-
docker-compose up --build --remove-orphans它的行为是预期的,我在test_mysql_v1容器中得到一个名为test_mysql_v1的db。
但是,当我这么做-
1. docker build -t dfd_1 .
2. docker run -v /var/run/docker.sock:/var/run/docker.sock -it dfd_1 sh
from inside -
3. docker-compose up --build --remove-orphans然后在新创建的test_mysql_v1容器中,docker-entrypoint-initdb.d目录为空(未创建db )。
谁能帮我把这件事做好吗?
最终结果应该是--当我从dfd_1容器内部运行docker时,它应该使用db已经创建的创建一个mysql容器。
附加注释-
我使用- docker-compose down来降低mysql容器的
docker run -v /var/run/docker.sock:/var/run/docker.sock ...时,我需要另一个卷装入,这样docker-compose.yml (在dfd_1中)就可以正确地将db复制到docker-entrypoint-initdb.d。任何帮助都是非常感谢的。谢谢。
发布于 2020-08-16 12:09:13
通过将主机目录上的路径传递给内部的容器来实现。
更改后的停靠程序运行命令-
docker run -v /var/run/docker.sock:/var/run/docker.sock -e HOST_DIR=$PWD -it dfd_1 sh和docker-compose.yml (在映射卷时使用HOST_DIR env变量)作为-
version: "2"
services:
test_mysql:
image: "mysql:5.7"
container_name: test_mysql_v1
volumes:
- ${HOST_DIR}/db:/docker-entrypoint-initdb.d/
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- "3310:3306"https://stackoverflow.com/questions/63399913
复制相似问题