5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VaporAdvent Calendar 2018

Day 4

VaporをDocker化し、CentOS上で動かす

Last updated at Posted at 2018-12-03

VaporはSwiftがサポートされているUbuntu上でしか動作しませんが、Dockerを使うことでUbuntu以外のOS上でも動かすことができます。本記事ではVaporをCentOS上で動かします。

まず、ubuntu:16.04をベースイメージとして、Vaporのイメージを作成します。下記のファイルはGitHubGistに上げてあります。

Dockerfile
FROM ubuntu:16.04

RUN apt-get update && apt-get install -y \
  nginx \
  git \
  vim \
  wget \
  curl
RUN /bin/bash -c "$(wget -qO- https://apt.vapor.sh)"
RUN apt-get install -y \
  swift \
  vapor

RUN rm /etc/nginx/nginx.conf
COPY vapor.conf /etc/nginx/conf.d
COPY nginx.conf /etc/nginx

RUN vapor new Hello --template=web
WORKDIR /Hello
RUN swift build
RUN vapor build

EXPOSE 80

COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
startup.sh

#!/bin/bash

nginx
vapor run
nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable "msie6";

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
}
vapor.conf
server {
        listen 80;
        listen [::]:80;
        server_name 0.0.0.0;

        location / {
                proxy_set_header Host $http_host;
                proxy_pass http://localhost:8080;
        }
}

Dockerfileの準備ができたらビルドを行います。
以下のコマンドを実行し、ビルドとランを行なってください。
localhost:80にブラウザからアクセスし、Vaporのロゴが表示されていることを確認してください。

$ docker build -t simple-vapor:latest .
$ docker run -d -p 80:80 simple-vapor:latest

Vaporのロゴが表示されていることを確認したらDockerHubにアップロードします。
ここでの kabigon はDockerHubでの私のユーザー名なので、適宜変えてください。

$ docker build -t kabigon/simple-vapor .
$ docker push kabigon/simple-vapor

次にCentOS7のサーバーインスタンスをConohaで作成し、Dockerをインストールします。
CentOS7はyumで簡単にインストールすることができます。
Conohaちゃん可愛い。

ssh root@IP_ADDRESS
sudo yum -y install docker
docker --version

Dockerのインストールが終わったらDockerを起動します。

sudo systemctl start docker
sudo systemctl enable docker  // 自動起動設定

先ほどDockerHubにアップロードしたイメージをダウンロードして起動します。

docker pull kabigon/simple-vapor
docker run -d -p 80:80 kabigon/simple-vapor

ブラウザからサーバーインスタンスのIPアドレスにアクセスするとVaporのロゴが表示されます。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?