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