【发布时间】:2020-02-18 01:05:21
【问题描述】:
警告:我对 docker 和云托管相当陌生,这可能是一个愚蠢的问题。
我有一个本地 Web 应用程序,它有 3 个关联的图像,应用程序本身,数据库和 phpmyadmin 图像。一切都在本地运行良好,如果我将所有文件传输到我的数字海洋水滴并打开我的容器,它在那里也能正常运行,但这不是我想要部署的方式,让每个库中的每个文件都驻留在我的水滴中。
我一直在尝试在我的 droplet 上创建一个 docker-machine 并将我的容器远程部署到它。除了我的数据库映像没有引用我的数据库并且只是一个空数据库这一事实之外,这似乎工作正常。我尝试以在教程中看到的这种方式迁移数据库:
docker-compose run --rm web db:create db:migrate
但出现以下错误,我认为这是因为我的开发机器运行的是 Windows 10 而不是 Linux,但我无法在任何地方找到 Windows 机器的等效命令。
Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"db:create\": executable file not found in $PATH": unknown
我知道我可能遗漏了一些非常愚蠢和简单的东西,但我很难弄清楚如何为我的数据库映像迁移数据。提前致谢。
更新: 这里要求的是我的 docker-compose:
version: "3.4"
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=db
restart: always
ports:
- 80:80
volumes:
- /sessions
depends_on:
- db
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: mypass
MYSQL_DATABASE: mydb
ports:
- "3306:3306"
volumes:
- ./data:/docker-entrypoint-initdb.d
restart: always
web:
depends_on:
- db
build: .
ports:
- "8080:8080"
restart: always
volumes:
data:
更新#2: 将 db 文件传输到 /docker-entrypoint-initdb.d (我昨天也尝试过,但无法正常工作)并创建了一个新的生产 docker-compose-prod.yml 我必须仍然缺少一些东西,因为数据库仍然存在空的。下面是我的新 docker-compose-prod.yml:
version: "3.4"
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=db
restart: always
ports:
- 80:80
volumes:
- /sessions
depends_on:
- db
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: mypass
MYSQL_DATABASE: mydb
ports:
- "3306:3306"
volumes:
- /docker-entrypoint-initdb.d
restart: always
web:
depends_on:
- db
build: .
ports:
- "8080:8080"
restart: always
【问题讨论】:
标签: docker-compose digital-ocean docker-machine