首页 iOS.& Swift Books 服务器端迅速与蒸气

32
使用Docker部署 由Jonas Schwartz撰写

笔记:此更新是一个早期访问版本。本章尚未更新到蒸气4。

Docker是一种流行的集装箱技术,对部署应用开奖结果3d的影响巨大。容器是一种隔离应用开奖结果3d的方法,允许您在同一服务器上运行多个应用开奖结果3d。

使用容器,而不是全方位的虚拟机,允许您的集装箱应用开奖结果3d共享更多主机的资源。反过来,这将留下更多资源来使用,而不是消耗它们来支持虚拟机本身。

Docker几乎可以在任何地方运行,所以它为标准化应用开奖结果3d如何运行,从本地测试提供了一个很好的方法,从而从本地测试到生产。

笔记:如果您需要进修Docker术语 - 容器和图像等概念 - 请查看我们的Docker教程 //www.ohdvia.icu/9159-docker-on-macos-getting-started.

Docker撰写

本章还将向您展示如何使用Docker撰写。 Docker Compose是一种指定与单个单元一起工作的不同容器列表的方法。这些容器共享相同的虚拟网络,使其简单彼此合作。

例如,使用Docker Compose,您可以只需一个命令使用Vopor App和PostgreSQL数据库实例旋转。它们可以彼此沟通,但是与在同一主机上运行的其他实例中孤立。

建立蒸气和PostgreSQL进行开发

首先,通过设置简单的开发配置来在Linux环境中测试您的应用。为了便于调试出现的任何问题,这将是一个比在生产中使用的更简单的配置。

#1
FROM swift:4.2
#2
WORKDIR /app
#3
COPY . .
#4
RUN swift package clean
RUN swift build -c release
RUN mkdir /app/bin
RUN mv `swift build -c release --show-bin-path` /app/bin
EXPOSE 8080
#5
ENTRYPOINT ./bin/release/Run serve --env local \
  --hostname 0.0.0.0
# 1
version: '3'
# 2
services:
  # 3
  til-app:
    # 4
    depends_on:
      - postgres
    # 5
    build: .
    # 6
    ports: 
      - "8080:8080"
    environment:
      - DATABASE_HOSTNAME=postgres
      - DATABASE_PORT=5432
  # 7
  postgres:
    # 8
    image: "postgres"
    # 9
    environment:
      - POSTGRES_DB=vapor
      - POSTGRES_USER=vapor
      - POSTGRES_PASSWORD=password

  # 10
  start_dependencies:
    image: dadarek/wait-for-dependencies
    depends_on:
      - postgres
    command: postgres:5432
# 1
docker-compose build
# 2
docker-compose run --rm start_dependencies
# 3
docker-compose up til-app
docker-compose down
docker volume prune

设置蒸气和PostgreSQL进行生产

您可以在Docker配置中进行多种更改,以简化在生产环境中管理应用开奖结果3d。在本节中,您将将您的应用开奖结果3d拆分为“构建器”容器和生产图像。您还将配置PostgreSQL容器以在主机的文件系统中保存其数据库,使您的数据持续到应用开奖结果3d的更改及其配置。

# 1
FROM swift:4.2 as builder

# 2
RUN apt-get -qq update && apt-get -q -y install \
  tzdata \
  && rm -r /var/lib/apt/lists/*

# 3
WORKDIR /app
# 4
COPY . .
# 5
RUN mkdir -p /build/lib && \
  cp -R /usr/lib/swift/linux/*.so /build/lib
RUN swift build -c release && \
  mv `swift build -c release --show-bin-path` /build/bin

# Production image
# 6
FROM ubuntu:16.04
# 7
RUN apt-get -qq update && apt-get install -y \
  libicu55 libxml2 libbsd0 libcurl3 libatomic1 \
  tzdata \
  && rm -r /var/lib/apt/lists/*
# 8
WORKDIR /app
# 9
COPY --from=builder /build/bin/Run .
COPY --from=builder /build/lib/* /usr/lib/
# You need the next line if your app serves static resources
# from the Public directory
COPY --from=builder /app/Public ./Public
# You need the next line if your app uses Leaf
COPY --from=builder /app/Resources ./Resources

# 10
ENTRYPOINT ./Run serve --env production --hostname 0.0.0.0 \
  --port 8080
# 1
version: '3'
# 2
services:
  # 3
  til-app:
    # 4
    depends_on:
      - postgres
    # 5
    build:
      context: .
      dockerfile: production.Dockerfile
    # 6
    ports:
      - "8080:8080"

    environment:
      - DATABASE_HOSTNAME=postgres
      - DATABASE_PORT=5432
  # 7
  postgres:
    # 8
    image: "postgres"
    # 9
    volumes:
      - ~/postgres-data:/var/lib/postgresql/data
    # 10
    environment:
      - POSTGRES_DB=vapor
      - POSTGRES_USER=vapor
      - POSTGRES_PASSWORD=password

  # 11
  start_dependencies:
    image: dadarek/wait-for-dependencies
    depends_on:
      - postgres
    command: postgres:5432
docker-compose -f docker-compose.production.yml build
docker-compose -f docker-compose.production.yml \
  run --rm start_dependencies
docker-compose -f docker-compose.production.yml up til-app

然后去哪儿?

您已在Docker环境中看到了如何运行应用开奖结果3d的一些基本配方。因为Docker是如此灵活,所以这些食谱只划伤了您可用的可能性的表面。例如,您可能希望允许您的应用开奖结果3d在主机文件系统中保存上传的文件。或者,您可能希望配置应用开奖结果3d以在Nginx代理服务器后面运行以获得安全的HTTPS访问。

有一个技术问题?想报告一个错误吗? 您可以向官方书籍论坛中的书籍作者提出问题和报告错误 这里.

有反馈分享在线阅读体验吗? 如果您有关于UI,UX,突出显示或我们在线阅读器的其他功能的反馈,您可以将其发送到设计团队,其中表格如下所示:

© 2021 Razeware LLC

您可以免费读取,本章的部分显示为 混淆了 文本。解锁这本书,以及我们整个书籍和视频目录,带有Raywenderlich.com的专业订阅。

现在解锁

要突出或记笔记,您需要在订阅中拥有这本书或自行购买。