きゃまメモ

(自分用のメモであったり、何かしらアップしたり)

DockerのCentOS7にNginx、Express、Postgres環境を作る

2018.04.17
docker centos nodejs nginx express postgres

dockerでコンテナを作りアクセスする

docker run -dit -p {$port_number}:80 --name demo centos:7
docker exec -it demo bash

Postgresのインストール

yum -y install wget
wget https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-6-x86_64/pgdg-centos10-10-2.noarch.rpm
rpm -ivh pgdg-centos10-10-2.noarch.rpm
yum list available | grep postgresql
yum install -y postgresql10 postgresql10-server postgresql10-contrib postgresql10-libs
su - postgres
/usr/pgsql-10/bin/initdb -D /var/lib/pgsql/10/data --no-locale -E utf-8 -k
exit

Postgresの起動

su - postgres
/usr/pgsql-10/bin/pg_ctl -D /var/lib/pgsql/10/data start

Nginxのインストール

vim /etc/yum.repos.d/nginx.repo
...
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1
priority=1
...

yum -y install nginx

Node.jsのインストール

yum -y install git
git clone https://github.com/creationix/nvm.git ~/.nvm
source ~/.nvm/nvm.sh

vim ~/.bash_profile
...
if [[ -s ~/.nvm/nvm.sh ]];
  then source ~/.nvm/nvm.sh
fi
...

nvm ls-remote
nvm install stable

Expressのインストール

npm install express -g
npm install express-generator -g

PM2のインストール

npm install pm2 -g

Nginxの設定

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/express.conf
vim /etc/nginx/conf.d/express.conf
...
upstream express {
  server localhost:3000;
}
server {
  listen 80;
  server_name {$host};
  charset utf-8;
  location / {
    proxy_pass http://express;
  }
}
...

Nginx起動

nginx #起動
nginx -s stop #停止
nginx -s reload #再起動

Expressでアプリを作る

express --view=pug myapp
cd myapp/
npm install
pm2 start bin/www

ホスト名と”docker run”で指定したポート番号でアクセスする