docker

docker镜像基于centos【nginx,pgsql,java】环境部署简单的web应用

目录结构

安装包网上下载

.
├── Dockerfile
├── dpi-data-grid-1.0.0-SNAPSHOT.jar #业务部署包
├── dpi-front.tar #前台html
├── jdk-8u333-linux-x64.tar.gz #可以用jre环境包比较小
├── nginx-1.18.0.tar.gz
├── nginx_80.conf #nginx配置
├── postgresql-11.5.tar.gz
├── public.sql #初始化sql
└── start.sh #docker镜像启动脚本
Dockefile
# 1.文件夹
    RUN \
	mkdir -p /usr/local \
    && mkdir -p /data/nginx/conf \
    && mkdir -p /data/nginx/html
# 复制文件
COPY jdk-8u333-linux-x64.tar.gz /usr/local
COPY nginx-1.18.0.tar.gz /usr/local
COPY dpi-front.tar /usr/local
COPY dpi-data-grid-1.0.0-SNAPSHOT.jar /usr/local
COPY start.sh /usr/local
COPY nginx_80.conf /usr/local
COPY postgresql-11.5.tar.gz /usr/local
COPY public.sql /usr/local/init_db.sql
# 安装 sshd 修改密码
#RUN \
#    yum install passwd openssl openssh-server -y \
#    && ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' \
#    && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' \
#	&& ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N '' \
#    && sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config \
#    && echo 123456 | passwd --stdin root \
#    && echo root:123456|chpasswd \
#    && rm -rf /var/cache/yum/*
# 安装 nginx
RUN \
    yum -y install gcc-c++ zlib zlib-devel openssl openssl--devel pcre pcre-devel \
    && cd /usr/local \
    && tar -zxv -f nginx-1.18.0.tar.gz \
    && rm -rf nginx-1.18.0.tar.gz \
    && cd nginx-1.18.0 \
    && ./configure --with-http_stub_status_module \
    && make && make install \
    && cd .. \
    && rm -rf nginx-1.18.0 \
    && rm -rf /var/cache/yum/*
RUN \
    cd /usr/local \
        && tar -zxvf jdk-8u333-linux-x64.tar.gz \
        && rm -rf jdk-8u333-linux-x64.tar.gz \
		&& tar -xv -f dpi-front.tar \
		&& rm -rf dpi-front.tar
# 安装pgsql
RUN \
	 yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel  python-devel gcc-c++ openssl-devel cmake gcc* readline-devel make \
    	&& cd /usr/local \
	&& tar -vxf postgresql-11.5.tar.gz \
	&& mkdir -p /usr/local/postgresql/data \
	&& cd postgresql-11.5 \
	&& ./configure --prefix=/usr/local/postgresql --with-python --with-libxml --with-libxslt \	
	&&  make && make install \
	&& groupadd -r postgres \
	&& useradd -r -g postgres postgres \
	&& chown -R postgres:postgres /usr/local/postgresql \
	&& su - postgres -c  '/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data/ -E UTF8' \
	&& echo 'host  all  all 0.0.0.0/0 md5' >> /usr/local/postgresql/data/pg_hba.conf \
	&& echo "listen_addresses='*'" >> /usr/local/postgresql/data/postgresql.conf \
	&& sed -i -e "s/PRC/Asia\/Shanghai/g" /usr/local/postgresql/data/postgresql.conf \
	&& su - postgres -c  '/usr/local/postgresql/bin/pg_ctl -l /usr/local/postgresql/server.log -D /usr/local/postgresql/data/ start' \
	&& /usr/local/postgresql/bin/psql -c  "ALTER USER postgres PASSWORD '123456'"  -U postgres \
	&& /usr/local/postgresql/bin/psql -c  'CREATE DATABASE "db_dev_monitor" WITH OWNER = "postgres" ENCODING = "UTF8"'  -U postgres \
    && /usr/local/postgresql/bin/psql -c  'CREATE SCHEMA "test" AUTHORIZATION "postgres"' -d db_dev_monitor -U postgres \
	&& /usr/local/postgresql/bin/psql -q -f /usr/local/init_db.sql -d db_dev_monitor -U postgres \
	&& rm -rf /usr/local/init_db.sql \
	&& rm -rf /usr/local/ postgresql-11.5
    && rm -rf /var/cache/yum/*

		
#设置工作访问时候的WORKDIR路径,登陆落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置java环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_333
ENV NGINX_HOME /usr/local/nginx/sbin
ENV PATH $PATH:$JAVA_HOME/bin:$NGINX_HOME
EXPOSE 22 80 5432 
CMD ["/bin/bash","/usr/local/start.sh"]
启动脚本
#!/bin/sh
#/usr/sbin/sshd 2>&1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
su - postgres -c  '/usr/local/postgresql/bin/pg_ctl -l /usr/local/postgresql/server.log -D /usr/local/postgresql/data/ start'
nginx -c /usr/local/nginx_80.conf
nohup java -jar -Dserver.port=9091 dpi-data-grid-1.0.0-SNAPSHOT.jar  > out.log 2>&1 &
tail -f out.log

相关命令
#防火墙
firewall-cmd --zone=public --list-ports
firewall-cmd --add-port=8999/tcp --permanent
firewall-cmd --reload

#docker
docker cp public.sql 4f7:/usr/local
docker build ./ -t dpi_v1.0
docker run -d -p 8999:80 -p 9001:22 dpi_v1.0
#运行覆盖CMD命令【原Dockefile的CMD命令将会被覆盖】
docker run -d -p 8999:80 -p 9001:22 dpi_v1.0 /bin/bash -c "tail -f /dev/null"

#pgsql
#pgsql初始化
su - postgres -c  '/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data/ -E UTF8' 
#启动pgsql
su - postgres -c  '/usr/local/postgresql/bin/pg_ctl -l /usr/local/postgresql/server.log -D /usr/local/postgresql/data/ start'
#局域网连接
echo 'host  all  all 0.0.0.0/0 md5' >> pg_hba.conf
echo "listen_addresses='*'" >> postgresql.conf
#执行sql
/usr/local/postgresql/bin/psql -c  "ALTER USER postgres PASSWORD '123456'"  -U postgres
#执行sql文件
/usr/local/postgresql/bin/psql -q -f test.sql -d test1 -U postgres
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值