Containers

预计阅读时间:2分钟

Docker

Docker是一个容器引擎:它允许您在沙盒分层轻量级环境中使用其自己的隔离文件系统,操作系统和资源来打包和运行应用程序.

通常,您必须为整体服务创建一个Dockerfile ,而当您的容器需要与其他服务(例如数据库或docker-compose.yml进行交互时,则需要创建一个Dockerfile docker-compose.yml .

首先,您必须使用应用程序创建一个胖子文件 . 还有一个Dockerfile ,如下所示:

Dockerfile
FROM openjdk:8-jre-alpine

ENV APPLICATION_USER ktor
RUN adduser -D -g '' $APPLICATION_USER

RUN mkdir /app
RUN chown -R $APPLICATION_USER /app

USER $APPLICATION_USER

COPY ./build/libs/my-application.jar /app/my-application.jar
WORKDIR /app

CMD ["java", "-server", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-XX:InitialRAMFraction=2", "-XX:MinRAMFraction=2", "-XX:MaxRAMFraction=2", "-XX:+UseG1GC", "-XX:MaxGCPauseMillis=100", "-XX:+UseStringDeduplication", "-jar", "my-application.jar"]

只需部署到Docker,即可查看docker quickstart页面以获取全部详细信息.

Nginx

当将Docker与多个域一起使用时,您可能希望使用nginx-proxy映像和letsencrypt-nginx-proxy-companion映像在单个机器/ ip中为多个域/子域提供服务,并使用let加密自动提供HTTPS.

配置nginx-proxy和letencrypt-nginx-proxy-companion之后,您的docker-compose.yml文件(不包含其他服务)可能如下所示:

docker-compose.yml
version: '2'
services:
  web:
    build:
      context: ./
      dockerfile: Dockerfile
    expose:
      - 8080
    environment:
      - VIRTUAL_HOST=mydomain.com
      - VIRTUAL_PORT=8080
      - LETSENCRYPT_HOST=mydomain.com
      - LETSENCRYPT_EMAIL=myemail@mydomain.com
    networks:
      - reverse-proxy
    restart: always

networks:
  backend:
  reverse-proxy:
    external:
      name: reverse-proxy

您可以使用docker-compose up -d来启动它,如果服务失败或在系统重启后它将重新启动.

如果指定域的DNS指向您的服务器,并且您已正确配置nginx-proxy及其伴侣,则letsencrypt伴侣将与letsencrypt联系并自动为您获取和配置证书. 因此,您将能够通过以下地址访问仅HTTP服务:https://mydomain.com/ nginx将处理SSL证书,并将通过纯HTTP与您的服务器联系.

Tomcat

您必须生成一个war文件 ,并将其放在Tomcat webapps文件夹中.

有关完整的示例,请检查: https : //github.com/ktorio/ktor-samples/tree/master/deployment/tomcat-war

Jetty

您必须生成一个战争文件并将其放在Jetty webapps文件夹中.

有关完整的示例,请检查: https : //github.com/ktorio/ktor-samples/tree/master/deployment/jetty-war

by  ICOPY.SITE