问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在docker里部署nodejs

发布网友 发布时间:2022-04-22 10:03

我来回答

3个回答

懂视网 时间:2022-05-01 05:53

###上传并解压安装文件:
tar zxvf nginx-1.8.0.tar.gz

 

###进到安装目录:
cd nginx-1.8.0

 

###编译参数安装:

./configure --user=nginx --group=nginx --prefix=/app/nginx1.8.0 --with-http_stub_status_module --with-http_ssl_module 
make
make install

 

###建立软连接:
ln -s /app/nginx1.8.0/ /app/nginx
ll /app/nginx

 

###检查语法并启动:
/app/nginx/sbin/nginx -t #检查语法
/app/nginx/sbin/nginx


mysql:

###安装依赖包####
yum -y install wget gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison bison-devel ncurses-devel perl


###新建用户组###
groupadd mysql
useradd mysql -g mysql


###上传并解压安装包###

cd /home/hejp/tools
tar -zxv -f mysql-5.6.17.tar.gz
cd mysql-5.6.17


 


###cmake编译参数安装###
cmake
-DCMAKE_INSTALL_PREFIX=/app/mysql-5.6.17
-DMYSQL_UNIX_ADDR=/app/mysql-5.6.17/tmp/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DMYSQL_DATADIR=/app/mysql-5.6.17/data
-DMYSQL_USER=mysql
-DMYSQL_TCP_PORT=3306

make && make install



# 复制配置文件
cp /app/mysql/support-files/my-default.cnf /etc/my.cnf


#添加系统变量
echo ‘export PATH=/app/mysql/bin:$PATH‘ >>/etc/profile
echo "export PATH" >> /etc/profile
source /etc/profile
echo $PATH


# 进入安装路径并授权mysql用户:
cd /app/mysql
mkdir -p /app/mysql/data
chown -R mysql.mysql /app/mysql/

##调整/tmp授权,否则初始化会错误:
chmod -R 1777 /tmp 

# 执行初始化:
cd /app/mysql/scripts/
./mysql_install_db --basedir=/app/mysql/ --datadir=/app/mysql/data/ --user=mysql

 

# 把服务启动脚本添加到/etc/init.d目录下:
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld


# 启动MySQL服务,设置密码,设置开机启动。

/etc/init.d/mysqld start
netstat -lntup|grep mysql
/app/mysql/bin/mysqladmin -u root password ‘qyd123‘ 
chkconfig mysqld on
echo "ok!"


php:

###上传并解压安装包:

cd /home/hejp/tools/
tar zxvf php-7.0.4.tar.gz

 

###进到目录并安装依赖包:
cd php-7.0.4
yum install libxslt* -y

 

###然后编译参数安装:
./configure
--prefix=/app/php7.0.4
--with-config-file-path=/app/php7.0.4/etc
--with-config-file-scan-dir=/app/php7.0.4/etc/php.d
--with-mysql-sock=/app/mysql-5.6.17/tmp/mysql.sock
--with-mcrypt=/usr/local
--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=/app/mysql-5.6.17
--enable-fpm
--with-fpm-user=nginx
--with-fpm-group=nginx
--with-gd
--with-iconv
--with-zlib
--enable-xml
--enable-shmop
--enable-sysvsem
--enable-inline-optimization
--enable-mbregex
--enable-mbstring
--enable-ftp
--enable-gd-native-ttf
--with-openssl
--enable-pcntl
--enable-sockets
--with-xmlrpc
--enable-zip
--enable-soap
--without-pear
--with-gettext
--enable-session
--with-curl
--with-jpeg-dir
--with-freetype-dir
--enable-opcache

make
make install

ln -s /app/php7.0.5/ /app/php

 

###从安装目录拷贝配置文件:
cp php.ini-production /app/php/etc/php.ini

 

###进到目录修改配置文件参数:
cd /app/php/etc/
cp php-fpm.conf.default php-fpm.conf


[ -f php-fpm.conf ] &&
sed -i "s%;pid = run/php-fpm.pid%pid = /app/logs/php-fpm.pid%g" php-fpm.conf
sed -i "s%;error_log = log/php-fpm.log%error_log = /app/logs/php-fpm.log%g" php-fpm.conf
sed -i "s%;log_level = notice%log_level = error%g" php-fpm.conf
sed -i "s%;rlimit_files = 1024%rlimit_files = 32768%g" php-fpm.conf
sed -i "s%; events.mechanism = epoll%events.mechanism = epoll%g" php-fpm.conf
sed -i "s%;rlimit_files = 1024%rlimit_files = 32768%g" php-fpm.conf

cd /app/php/etc/php-fpm.d/
cp www.conf.default www.conf


[ -f www.conf ] &&
sed -i "s/;listen.owner = nginx/listen.owner = nginx/g" www.conf
sed -i "s/;listen.group = nginx/listen.group = nginx/g" www.conf
sed -i "s/;listen.mode = 0660/listen.mode = 0660/g" www.conf
sed -i "s/pm.max_children = 5/pm.max_children = 1024/g" www.conf
sed -i "s/pm.start_servers = 2/pm.start_servers = 16/g" www.conf
sed -i "s/pm.min_spare_servers = 1/pm.min_spare_servers = 5/g" www.conf
sed -i "s/pm.max_spare_servers = 3/pm.max_spare_servers = 20/g" www.conf
sed -i "s/;pm.process_idle_timeout = 10s;/pm.process_idle_timeout = 15s;/g" www.conf
sed -i "s/;pm.max_requests = 500/pm.max_requests = 2048/g" www.conf

 

#创建php的error_log和pid文件路径:
mkdir /app/logs -p

 

#检查语法并启动
/app/php/sbin/php-fpm -t
/app/php/sbin/php-fpm 
netstat -lntup|grep php-fpm
ps -ef|grep php-fpm

echo "ok!"


redis:

###解压源码包:

tar -zxvf redis-3.0.6.tar.gz

 

###进入目录编译安装:
cd redis-3.0.6 
make
make PREFIX=/app/redis-3.0.6 install

ln -s /app/redis-3.0.6 /app/redis

 

###创建配置文件redis.conf:
mkdir /app/redis/etc/
cp redis.conf /app/redis/etc/

 

###把命令拷贝到 /usr/bin/:
cd /app/redis/bin/
cp redis-benchmark redis-cli redis-server /usr/bin/


#调整内存参数
#1表示内核允许超量使用内存直到内存用完为止:
echo  "vm.overcommit_memory=1">>/etc/sysctl.conf
sysctl -p

 

###修改一下配置文件redis.conf

vim /app/redis/etc/redis.conf

 

# redis以守护进程的方式运行
daemonize yes

 

# 客户端闲置多长时间后断开连接,默认为0关闭此功能 
timeout 300

 

# 设置redis日志级别,默认级别:notice 
loglevel verbose


# 并且日志输出设置为stdout,那么日志信息就输出到/dev/null里面去了 
logfile stdout

 

###redis环境变量配置:

vim /etc/profile
export PATH="$PATH:/app/php/bin:/app/mysql/bin:/app/redis/redis/bin"

source /etc/profile

 

####启动服务:

/app/redis/bin/redis-server /app/redis/etc/redis.conf

ps -ef|grep redis

lsof -i:6379

echo "ok"


nodesjs:

centos7下编译安装nodejs:

tar xvf node-v4.4.3.tar.gz

cd node-v4.4.3
./configure 
make 
make install

 

编译完后配置环境:

cp /usr/local/bin/node /usr/sbin/

 

检查命令:

 whereis node


出现这个:node: /usr/local/bin/node  表示node安装完成。

 

再安装以下模块,命令为:

 node还要安装以下模块  
npm install -g ejs
npm install -g jade
npm install -g express
npm install -g forever 

######################################

   以上为相关的服务安装脚本,当然安装完服务后还需要相关的交互测试,以保证服务安装成功,例如redis和php的交互还需要安装phpredis,php与mysql的交互需要用到pdo来插入数据进行测试。

本文出自 “早起的鸟儿有虫吃” 博客,谢绝转载!

docker容器里面各测试环境部署部署脚本(nginx,php,redis,mysql,nodejs)

标签:docker容器里面各测试环境部署部署脚本(nginx   php   redis   mysql   nodejs)   

热心网友 时间:2022-05-01 03:01

有下面几种方式:1.通过-itd方式运行ubuntu或centos的容器并导出端口,然后把容器当成一个主机来安装。2.通过Dockerfile来编译成镜像,具体可以参考:()中的《Docker从入门到精通一书》3.也可以通过精灵云的一键部署服务,如下图:a.注册用户进入管理界面,选择精灵模板,找到node.js模板,然后点部署b.进入应用->容器->访问接口,即可访问,也可以通过控制台进入容器:

热心网友 时间:2022-05-01 04:19

因此,在实践之前,需要先讲一下原理,这样就可以理解了。
1.docker的核心概念为什么是“容器”而不是“镜像”?
因为“镜像”是无状态的,对同一个镜像 docker run 两次,将会产生2个“容器”。而“容器”之间是相互隔离的。
也即是说,第一次 docker run centos,得到容器A,然后bash shell进入。mkdir /app/myDir 后退出。
第二次 docker run centos,得到容器B,再bash shell进入后,/app/myDir 是不存在的。
因此 A 和 B 是相互隔离的。
2.如何从“无状态”到“有状态” ?
docker利用一个叫Dockerfile 的文件来描述,从一个“纯净”的镜像,执行哪些步骤(类似脚本的方式),最后产生一个“有状态”的镜像。
有点类似 “程序 = 数据结构 + 算法”的概念。数据结构 就是 “纯净”的镜像,算法就是 Dockerfile。
这样,每个人的Dockerfile 都不一样,因此,就泛化出来了,很多“实例镜像”。再 docker run 实例镜像,那么就是有状态的了。
实践
前置推荐:(非必须)首先在VPS上 建立一个工作目录,这样方便归类,本文将在此目录做所有操作。
1
2
[root@yuanxiaolong nodejs]# pwd
/root/app/workspace/nodejs
Step 1.建立 nodejs的package.json,以便Nodejs利用npm下载依赖的模块。
1
2
3
4
5
6
7
8
9
10
11
12
[root@yuanxiaolong nodejs]# cat package.json

{
"name": "docker-centos-hello",
"private": true,
"version": "0.0.1",
"description": "Node.js Hello world app on CentOS using docker",
"author": "Daniel Gasienica <daniel@gasienica.ch>",
"dependencies": {
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
厂口银杏园地址在哪里? 昆明银杏大道在什么地方 昆明哪些地方有银杏树 从二月河“帝王三部曲”看90年代的文学场(一) 二月河《落霞三部曲》读书札记 安装织梦CMS到新浪SAE,这数据库主机,用户都是什么?这个是安装在新浪SE... SAE上的mySql初始化了怎么用啊,java怎么连上去啊,地址,端口号,账号... 金鱼尾部出现血丝,怎么办? 金鱼尾鳍上有血丝,急躁不安是什么病 请问?家里养的金鱼,一夜过来,金鱼尾巴上面都有红色血丝是怎么回事... 缴纳城乡居民保险时提示职工医保处于参保状态,无法缴费,该怎么解决? 在公司辞职了 医保 社保缴费不了 该怎么办? 优就业大数据好还是尚观好? 如何在Docker中设置Go并部署应用 404 Not Found 有啥大女主影视剧? 有哪些好看的大女主古装剧值得推荐? 大女主时代到来,明年的这五部电视剧你最喜欢哪个 究竟有哪些“大女主”电影值得推荐? 热巴首部大女主剧将开机,男主会是谁? 《当家主母》开播了,这是一部什么类型的电视剧? - 信息提示 《与君歌》中宣璐饰演的仇烟织是个什么样的人? 梦见宸插幓涓栫殑寮熷紵 2021了,国产婆媳剧也玩出新花样,《婆婆的镯子》是大女主剧么? 你看过哪些“大女主”类型的电视剧? 新媒体运营怎么玩媒体矩阵 从三个维度进行 在观众眼中什么才算真正的“大女主”剧? 有什么宫斗剧好看的而且是大女主戏? 短视频平台为什么要进行矩阵化运营? 广东税交医保显示非城乡居民参保人员不能进行缴费? 买的保险如果没有按时交保费的话,会自动失效与退保吗? 无法补缴养老保险,造成劳动者损失怎么赔 新华保险已经交了两年,现在因为种种原因,不能如期交保,请问:怎样处理比较合理? 养老保险不能缴纳是什么原因 年金保险如果不能连续缴费,保单失效了怎么办? 养老保险交不进去为什么? 在手机上交医疗保险却显示无法交费,可能是因为什么? 上家公司没有退保,我现在公司无法投保,怎么办 404 Not Found 保险费要续缴 如不能按时缴纳怎么办 社保网上交不了怎么办 无良老东家在职停保,我无法交保险,该怎么办 Old Tom the killer whale,的翻译 现有学校局域网网线一根 ,无线路由器一个 支持wifi的手机一部 要想使用无线路由器,手机该如何 涓什么意思?近义词和反义词是什么?英文翻译是什么? 涓什么意思?近义词和反义词是什么?英文翻译是什么? 有关横笛,三Q 怎样关掉支付宝里面的免密支付 怎么关掉免密支付功能支付宝