我想没有人知道是否可以从网络应用程序调用
docker run
或 docker compose up
命令?
我有以下场景,其中我有一个使用 openlayers 作为地图的 React 应用程序。我拥有它,以便当用户失去互联网连接时,它会回退到向在 Docker 上本地运行的地图服务器发出请求。问题是用户需要通过命令行手动启动服务器。为了让用户更轻松,我添加了以下 bash 脚本和 docker compose 文件来使用单个命令启动服务器,但我想知道是否可以将该功能合并到 Web 应用程序中,并让用户通过以下方式启动地图服务器:单击按钮?
仅供参考,这些是我的 bash 和 compose 文件。
#!/bin/sh
dockerDown=`docker info | grep -qi "ERROR" && echo "stopped"`
if [ $dockerDown ]
then
echo "\n ********* Please start docker before running this script ********* \n"
exit 1
fi
skipInstall="no"
read -p "Have you imported the maps already and just want to run the app (y/n)?" choice
case "$choice" in
y|Y ) skipInstall="yes";;
n|N ) skipInstall="no";;
* ) skipInstall="no";;
esac
pbfUrl='https://download.geofabrik.de/asia/malaysia-singapore-brunei-latest.osm.pbf'
#polyUrl='https://download.geofabrik.de/asia/malaysia-singapore-brunei.poly'
#-e DOWNLOAD_POLY=$polyUrl \
docker volume create openstreetmap-data
docker volume create openstreetmap-rendered-tiles
if [ $skipInstall = "no" ]
then
echo "\n ***** IF THIS IS THE FIRST TIME, YOU MIGHT WANT TO GO GET A CUP OF COFFEE WHILE YOU WAIT ***** \n"
docker run \
-e DOWNLOAD_PBF=$pbfUrl \
-v openstreetmap-data:/var/lib/postgresql/12/main \
-v openstreetmap-rendered-tiles:/var/lib/mod_tile \
overv/openstreetmap-tile-server \
import
echo "Finished Postgres container!"
fi
echo "\n *** BOOTING UP SERVER CONTAINER *** \n"
docker compose up
我的 docker 撰写文件
version: '3'
services:
map:
image: overv/openstreetmap-tile-server
volumes:
- openstreetmap-data:/var/lib/postgresql/12/main
- openstreetmap-rendered-tiles:/var/lib/mod_tile
environment:
- THREADS=24
- OSM2PGSQL_EXTRA_ARGS=-C 4096
- AUTOVACUUM=off
ports:
- "8080:80"
command: "run"
volumes:
openstreetmap-data:
external: true
openstreetmap-rendered-tiles:
external: true
有Docker API,你可以启动容器,
在 Docker 文档中, https://docs.docker.com/engine/api/
使用 Docker API 启动容器 https://docs.docker.com/engine/api/v1.41/#operation/ContainerStart
是的,可以。 您需要一个 Google 帐户才能使用 Google Cloud shell,它是免费的,并附带 5 GB 存储空间才能使用 Google Cloud Shell 您所要做的就是在找到不支持 Google Cloud 的 docker 容器后将 Google Cloud 授权给 Google Cloud Shell使用端口:3000 一旦找到 docker 容器,找到屏幕右上角的终端图标 一旦找到终端图标,单击终端图标右侧的图标,然后单击“添加端口”,然后输入以下端口docker 容器,然后单击“添加端口并预览”终端图标旁边的图标 它称为“Web 预览”,如果您找不到该图标,这里有一个 链接, 在您预览之前端口,您必须在终端中使用“docker run”命令运行 docker 容器,然后转到 Web 预览。这是一个 docker 容器,我认为你应该 run