使用 Docker + Kitura,但不使用 Mac
Use Docker + Kitura, but not on a Mac
我在 Mac ...
上有一个非常好的 Swift-Docker-Kitura 项目
您使用 Xcode 处理代码 ,然后在终端中 docker build
。它建立。您 docker run
,甚至可以 在本地主机上本地查看网页 。然后您可以 docker push
并且它 进入主 AWS 云 并被托管。
太好了。
但是如果我想使用 Swift-Docker-Kitura "not on a Mac" 怎么办?
你能 "build" 和 "push" 这样的 swift 项目 - 在 AWS(或类似服务)上的某种 shell 上吗?
有多种构建和 运行 Kitura Web 应用程序的选项,但并非所有选项都得到官方支持。
- 运行 它来自 Mac 上的 Xcode 项目,在 Xcode.
中构建
- 运行 它在 Mac 上的命令行中,使用
swift build
. 构建
- 运行 它在 Ubuntu 上的命令行中,使用
swift build
. 构建
- 运行 它在支持 Cloud Foundry 构建包的云上。参见 https://github.com/IBM-Swift/swift-buildpack. For example, on IBM Bluemix, see https://console.bluemix.net/catalog/starters/runtime-for-swift。
- 运行 它在 Ubuntu docker 中,参见 http://www.kitura.io/en/starter/leveragedocker.html,在任何支持 docker.
的平台上
- 使用 Kitura 应用程序代码创建 docker 图像(参见 https://github.com/IBM-Swift/swift-ubuntu-docker#using-ibmcomswift-ubuntu-runtime) and push it to any cloud that supports executing docker images. For example, IBM Bluemix Kubernetes Cluster https://console.bluemix.net/containers-kubernetes/catalogCluster。
- 您甚至可以将其嵌入到 iOS 应用程序中,请参阅 https://developer.ibm.com/swift/2017/03/13/kitura-ios/。
- 而且您可以在大型机上 运行 它,请参阅 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/。
您的选择有限。首先 Swift 目前仅在 Ubuntu 上获得认证。所以你想开发的 host 要么必须 运行 Ubuntu 要么必须 运行 Docker 在其下你可以 运行 Ubuntu。
理论上你也可以在目标 host 上编译 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
在构建期间被删除,以确保一些关于要使用的版本的内存不会在两个环境之间传输。
我在 Mac ...
上有一个非常好的 Swift-Docker-Kitura 项目您使用 Xcode 处理代码 ,然后在终端中 docker build
。它建立。您 docker run
,甚至可以 在本地主机上本地查看网页 。然后您可以 docker push
并且它 进入主 AWS 云 并被托管。
太好了。
但是如果我想使用 Swift-Docker-Kitura "not on a Mac" 怎么办?
你能 "build" 和 "push" 这样的 swift 项目 - 在 AWS(或类似服务)上的某种 shell 上吗?
有多种构建和 运行 Kitura Web 应用程序的选项,但并非所有选项都得到官方支持。
- 运行 它来自 Mac 上的 Xcode 项目,在 Xcode. 中构建
- 运行 它在 Mac 上的命令行中,使用
swift build
. 构建
- 运行 它在 Ubuntu 上的命令行中,使用
swift build
. 构建
- 运行 它在支持 Cloud Foundry 构建包的云上。参见 https://github.com/IBM-Swift/swift-buildpack. For example, on IBM Bluemix, see https://console.bluemix.net/catalog/starters/runtime-for-swift。
- 运行 它在 Ubuntu docker 中,参见 http://www.kitura.io/en/starter/leveragedocker.html,在任何支持 docker. 的平台上
- 使用 Kitura 应用程序代码创建 docker 图像(参见 https://github.com/IBM-Swift/swift-ubuntu-docker#using-ibmcomswift-ubuntu-runtime) and push it to any cloud that supports executing docker images. For example, IBM Bluemix Kubernetes Cluster https://console.bluemix.net/containers-kubernetes/catalogCluster。
- 您甚至可以将其嵌入到 iOS 应用程序中,请参阅 https://developer.ibm.com/swift/2017/03/13/kitura-ios/。
- 而且您可以在大型机上 运行 它,请参阅 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/。
您的选择有限。首先 Swift 目前仅在 Ubuntu 上获得认证。所以你想开发的 host 要么必须 运行 Ubuntu 要么必须 运行 Docker 在其下你可以 运行 Ubuntu。
理论上你也可以在目标 host 上编译 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
在构建期间被删除,以确保一些关于要使用的版本的内存不会在两个环境之间传输。