我可以从浏览器运行 docker 容器吗?

问题描述 投票:0回答:2

我想没有人知道是否可以从网络应用程序调用

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 browser docker-compose
2个回答
0
投票

有Docker API,你可以启动容器,

在 Docker 文档中, https://docs.docker.com/engine/api/

使用 Docker API 启动容器 https://docs.docker.com/engine/api/v1.41/#operation/ContainerStart


0
投票

是的,可以。 您需要一个 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

© www.soinside.com 2019 - 2024. All rights reserved.