使用Docker + Kitura,但不能在Mac上使用

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

我在Mac上有一个非常好的Swift-Docker-Kitura项目......

enter image description here

你使用Xcode处理代码,然后在终端中使用docker build。它构建。你docker run,你甚至可以在localhost上本地看到网页。然后,您可以docker push进入主AWS云并进行托管。

这一切都很棒。

但是,如果我想使用Swift-Docker-Kitura“不在Mac上”呢?

你可以在AWS(或类似服务)的某种shell上“构建”和“推动”这样一个快速的项目吗?

docker kitura
2个回答
2
投票

您的选择有限。首先,Swift目前仅在Ubuntu上获得认证。因此,您要开发的主机必须运行Ubuntu,或者必须运行Docker,您可以在其下运行Ubuntu。

理论上,您还可以在目标主机上编译swift。我为Debain(Jessie)做过一次旧版本的Swift,虽然我设法得到它编译但肯定不稳定。从那时起事情可能有所改善,我没有检查过。

所以最简单的方法是依靠Docker。这也允许你通过在Xcode中编辑然后在命令行上开发你的mac,你可以选择手动编译它。

我使用以下bash函数来打开我的Linux环境:

SwiftDocker2 ()
{
    name=`perl -e 'open IN, "</usr/share/dict/words";rand($.) \
        < 1 && ($n=$_) while <IN>;print $n'`;
    docker run -i -t --name=${name} -h ${name} --log-driver=json-file \
        -w /project -v $(pwd):/project -p 9000:9000 ibmcom/swift-ubuntu /bin/bash;
    echo "Created image ${name}";
    echo "Stopping image";
    docker stop ${name};
    echo "Removing image";
    docker rm ${name}
}

在上面的示例中,我打开了端口9000,您的应用程序可能不需要它。

我想要做的最后一点是使用构建目录。我使用Makefile来进行构建,在Makefile中我有以下部分:

BUILD_LINUX = "./.build-linux"
BUILD_MACOS = "./.build-macos"
UNAME = $(shell uname)

ifeq (${UNAME}, Darwin)
BUILD_PATH = ${BUILD_MACOS}
else
BUILD_PATH = ${BUILD_LINUX}
endif

xcode:
    @swift package --build-path ${BUILD_PATH} -Xlinker -L/usr/local/lib generate-xcodeproj

build:
    rm -f Package.pins
    swift build --build-path ${BUILD_PATH} -Xlinker "-L/usr/local/lib"

通过使用这种结构,MacOS环境将使用目录.build-macos进行构建,Linux将使用.build-Linux文件。在构建期间删除文件Package.pins以确保在两个环境之间不传输有关要使用的版本的某些内存。


5
投票

有许多选项可用于构建和运行Kitura Web应用程序,但并非所有选项都得到官方支持。

  1. 从Mac上的Xcode项目运行它,在Xcode中构建。
  2. 在Mac上的命令行中运行它,使用swift build构建。
  3. 在Ubuntu的命令行中运行它,使用swift build构建。
  4. 在支持Cloud Foundry构建包的云上运行它。见https://github.com/IBM-Swift/swift-buildpack。例如,在IBM Bluemix上,请参阅https://console.bluemix.net/catalog/starters/runtime-for-swift
  5. 在任何支持docker的平台上,在Ubuntu docker中运行它,请参阅http://www.kitura.io/en/starter/leveragedocker.html
  6. 使用Kitura应用程序代码创建docker镜像(请参阅https://github.com/IBM-Swift/swift-ubuntu-docker#using-ibmcomswift-ubuntu-runtime)并将其推送到支持执行docker镜像的任何云。例如,IBM Bluemix Kubernetes Cluster https://console.bluemix.net/containers-kubernetes/catalogCluster
  7. 您甚至可以将其嵌入iOS应用程序中,请参阅https://developer.ibm.com/swift/2017/03/13/kitura-ios/
  8. 你可以在大型机上运行它,请参阅https://developer.ibm.com/swift/2017/10/05/swift-zos-swift-4-0-beta-update/

从iPhone到大型机,Mac,Ubuntu,Docker和各种云提供商,这些都是运行Kitura的选择。

免责声明:我在IBM工作。截至本编辑日(2017年12月28日),据我所知,Kitura仅在此处描述的环境中由IBM支持https://developer.ibm.com/swift/2017/10/30/commercial-support/

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