jdk,nginx,mysql,redis,tomcat,nacos
243
#########dockerfile-java content start#########
# 基础镜像
FROM centos:7
# 执行sql脚本
RUN yum -y install wget \
#设置时区
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone \
#安装依赖
&& yum -y install gcc automake autoconf libtool make \
&& yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel \
&& yum -y install libaio \
&& yum -y install numactl \
######jdk start######
&& cd /usr/local \
&& wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz \
&& tar -xvf jdk-8u131-linux-x64.tar.gz \
&& rm -rf /usr/local/jdk-8u131-linux-x64.tar.gz* \
&& mv jdk1.8.0_131 jdk \
&& echo "export JAVA_HOME=/usr/local/jdk" >> ~/.bashrc \
&& echo "export JRE_HOME=\${JAVA_HOME}/jre" >> ~/.bashrc \
&& echo "export CLASSPATH=.:\${JAVA_HOME}/lib:\${JRE_HOME}/lib:\$CLASSPATH" >> ~/.bashrc \
&& echo "export JAVA_PATH=\${JAVA_HOME}/bin:\${JRE_HOME}/bin" >> ~/.bashrc \
&& echo "export PATH=\$PATH:\${JAVA_PATH}" >> ~/.bashrc \
&& source ~/.bashrc \
&& echo "export JAVA_HOME=/usr/local/jdk" >> /etc/profile \
&& echo "export JRE_HOME=\${JAVA_HOME}/jre" >> /etc/profile \
&& echo "export CLASSPATH=.:\${JAVA_HOME}/lib:\${JRE_HOME}/lib:\$CLASSPATH" >> /etc/profile \
&& echo "export JAVA_PATH=\${JAVA_HOME}/bin:\${JRE_HOME}/bin" >> /etc/profile \
&& echo "export PATH=\$PATH:\${JAVA_PATH}" >> /etc/profile \
&& source /etc/profile \
######jdk end######
######nginx start######
&& cd /usr/local \
&& mkdir nginx \
&& cd nginx \
&& wget http://nginx.org/download/nginx-1.13.7.tar.gz \
&& tar -xvf nginx-1.13.7.tar.gz \
&& cd nginx-1.13.7 \
&& ./configure \
&& make \
&& make install PREFIX=/usr/local/nginx-1.13.7 \
&& cd /usr/local/nginx \
&& rm -rf ./nginx-1.13.7* \
&& touch /usr/lib/systemd/system/nginx.service \
&& chmod 755 /usr/lib/systemd/system/nginx.service \
&& echo "[Unit]" >> /usr/lib/systemd/system/nginx.service \
&& echo "After=network.target remote-fs.target nss-lookup.target" >> /usr/lib/systemd/system/nginx.service \
&& echo "[Service]" >> /usr/lib/systemd/system/nginx.service \
&& echo "Type=forking" >> /usr/lib/systemd/system/nginx.service \
&& echo "ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf" >> /usr/lib/systemd/system/nginx.service \
&& echo "[Install]" >> /usr/lib/systemd/system/nginx.service \
&& echo "WantedBy=multi-user.target" >> /usr/lib/systemd/system/nginx.service \
&& chmod 644 /usr/lib/systemd/system/nginx.service \
&& systemctl enable nginx.service \
######nginx end######
######mysql start######
&& cd /usr/local \
&& wget https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz \
&& tar -xvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz \
&& rm -rf /usr/local/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz* \
&& mv mysql-5.7.35-linux-glibc2.12-x86_64 mysql \
&& groupadd mysql \
&& useradd -r -g mysql -s /bin/false mysql \
&& cd /usr/local/mysql \
&& mkdir /usr/local/mysql/data \
&& chown -R mysql:mysql /usr/local/mysql \
&& chmod -R 755 /usr/local/mysql \
&& echo "export MYSQL_HOME=/usr/local/mysql" >> ~/.bashrc \
&& echo "export MYSQL_PATH=\${MYSQL_HOME}/bin" >> ~/.bashrc \
&& echo "export PATH=$PATH:\${MYSQL_PATH}" >> ~/.bashrc \
&& source ~/.bashrc \
&& echo "export MYSQL_HOME=/usr/local/mysql" >> /etc/profile \
&& echo "export MYSQL_PATH=\${MYSQL_HOME}/bin" >> /etc/profile \
&& echo "export PATH=\$PATH:\${MYSQL_PATH}" >> /etc/profile \
&& source /etc/profile \
&& touch /usr/local/mysql/my-default.ini \
&& chmod 755 /usr/local/mysql/my-default.ini \
&& echo "[mysqld]" >> /usr/local/mysql/my-default.ini \
&& echo "basedir = /usr/local/mysql" >> /usr/local/mysql/my-default.ini \
&& echo "datadir = /usr/local/mysql/data" >> /usr/local/mysql/my-default.ini \
&& echo "bind-address = 0.0.0.0" >> /usr/local/mysql/my-default.ini \
&& /usr/local/mysql/bin/mysqld --initialize \
&& chown -R mysql:mysql /usr/local/mysql \
&& chmod -R 755 /usr/local/mysql \
&& touch /usr/lib/systemd/system/mysql.service \
&& chmod 755 /usr/lib/systemd/system/mysql.service \
&& echo "[Unit]" >> /usr/lib/systemd/system/mysql.service \
&& echo "After=network.target remote-fs.target nss-lookup.target" >> /usr/lib/systemd/system/mysql.service \
&& echo "[Service]" >> /usr/lib/systemd/system/mysql.service \
&& echo "Type=forking" >> /usr/lib/systemd/system/mysql.service \
&& echo "ExecStart=/usr/local/mysql/support-files/mysql.server start" >> /usr/lib/systemd/system/mysql.service \
&& echo "[Install]" >> /usr/lib/systemd/system/mysql.service \
&& echo "WantedBy=multi-user.target" >> /usr/lib/systemd/system/mysql.service \
&& chmod 644 /usr/lib/systemd/system/mysql.service \
&& systemctl enable mysql.service \
#新建设置root密码为123456,允许远程连接的脚本,启动进入容器后可执行/usr/local/mysql/UpdateRootPassword.sh
&& touch /usr/local/mysql/UpdateRootPassword.sh \
&& chmod 755 /usr/local/mysql/UpdateRootPassword.sh \
&& echo "#UpdateRootPassword.sh" >> /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \#!/bin/bash' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \DB_Root_Password="123456"' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \echo "Stoping mysql..."' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \/usr/local/mysql/support-files/mysql.server stop' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \sleep 5' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \echo "Starting mysql with skip grant tables"' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \/usr/local/mysql/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 &' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \sleep 5' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \echo "update mysql root password...start..."' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \/usr/local/mysql/bin/mysql -u'\''root'\'' << EOF' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \use mysql;' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \update user set authentication_string=password('\''\${DB_Root_Password}'\'') where user='\''root'\'';' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \flush privileges;' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \EOF' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \sleep 5' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \ps aux|grep mysqld|awk '\''{print \$2}'\''|xargs kill -9' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \sleep 5' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \/usr/local/mysql/support-files/mysql.server start' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \sleep 5' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \/usr/local/mysql/bin/mysql -u'\''root'\'' -p\${DB_Root_Password} --connect-expired-password << EOF' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \set password for '\''root'\''@'\''localhost'\'' = '\''\${DB_Root_Password}'\'';' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \grant all privileges on *.* to '\''root'\''@'\''%'\'' identified by '\''\${DB_Root_Password}'\'' with grant option;' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \flush privileges;' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \EOF' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '$a \echo "update \mysql root password...end..."' /usr/local/mysql/UpdateRootPassword.sh \
&& sed -i '1d' /usr/local/mysql/UpdateRootPassword.sh \
&& /usr/local/mysql/UpdateRootPassword.sh \
######mysql end######
######redis start######
&& cd /usr/local \
&& wget http://download.redis.io/releases/redis-4.0.8.tar.gz \
&& tar -xvf redis-4.0.8.tar.gz \
&& rm -rf /usr/local/redis-4.0.8.tar.gz* \
&& mv redis-4.0.8 redis \
&& cd /usr/local/redis \
&& make \
&& make install PREFIX=/usr/local/redis \
&& sed -i "s/daemonize no/daemonize yes/g" /usr/local/redis/redis.conf \
&& sed -i "s/# requirepass foobared/requirepass 123456/g" /usr/local/redis/redis.conf \
&& sed -i "s/protected-mode yes/protected-mode no/g" /usr/local/redis/redis.conf \
&& sed -i "s/bind 127.0.0.1/#bind 127.0.0.1/g" /usr/local/redis/redis.conf \
&& sed -i 's/dir .\//dir \/usr\/local\/redis\/data/g' /usr/local/redis/redis.conf \
&& sed -i "s/appendonly no/appendonly yes/g" /usr/local/redis/redis.conf \
&& mkdir /usr/local/redis/data \
&& chmod -R 755 /usr/local/redis \
&& touch /usr/lib/systemd/system/redis.service \
&& chmod 755 /usr/lib/systemd/system/redis.service \
&& echo "[Unit]" >> /usr/lib/systemd/system/redis.service \
&& echo "After=network.target remote-fs.target nss-lookup.target" >> /usr/lib/systemd/system/redis.service \
&& echo "[Service]" >> /usr/lib/systemd/system/redis.service \
&& echo "Type=forking" >> /usr/lib/systemd/system/redis.service \
&& echo "ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf" >> /usr/lib/systemd/system/redis.service \
&& echo "[Install]" >> /usr/lib/systemd/system/redis.service \
&& echo "WantedBy=multi-user.target" >> /usr/lib/systemd/system/redis.service \
&& chmod 644 /usr/lib/systemd/system/redis.service \
&& systemctl enable redis.service \
######redis end######
######tomcat start######
&& cd /usr/local \
&& wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz \
&& tar -xvf apache-tomcat-8.5.69.tar.gz \
&& rm -rf /usr/local/apache-tomcat-8.5.69.tar.gz* \
&& mv apache-tomcat-8.5.69 tomcat \
&& touch /usr/lib/systemd/system/tomcat.service \
&& chmod 755 /usr/lib/systemd/system/tomcat.service \
&& echo "[Unit]" >> /usr/lib/systemd/system/tomcat.service \
&& echo "After=network.target remote-fs.target nss-lookup.target" >> /usr/lib/systemd/system/tomcat.service \
&& echo "[Service]" >> /usr/lib/systemd/system/tomcat.service \
&& echo "Type=forking" >> /usr/lib/systemd/system/tomcat.service \
&& echo "ExecStart=/usr/local/tomcat/bin/startup.sh" >> /usr/lib/systemd/system/tomcat.service \
&& echo "[Install]" >> /usr/lib/systemd/system/tomcat.service \
&& echo "WantedBy=multi-user.target" >> /usr/lib/systemd/system/tomcat.service \
&& sed -i '2i\export JRE_HOME=/usr/local/jdk/jre' /usr/local/tomcat/bin/setclasspath.sh \
&& sed -i '2i\export JAVA_HOME=/usr/local/jdk' /usr/local/tomcat/bin/setclasspath.sh \
&& chmod 644 /usr/lib/systemd/system/tomcat.service \
&& systemctl enable tomcat.service \
######tomcat end######
######nacos start######
&& cd /usr/local \
&& wget https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.tar.gz \
&& tar -xvf nacos-server-2.0.3.tar.gz \
&& rm -rf /usr/local/nacos-server-2.0.3.tar.gz* \
&& touch /usr/lib/systemd/system/nacos.service \
&& chmod 755 /usr/lib/systemd/system/nacos.service \
&& echo "[Unit]" >> /usr/lib/systemd/system/nacos.service \
&& echo "After=network.target remote-fs.target nss-lookup.target" >> /usr/lib/systemd/system/nacos.service \
&& echo "[Service]" >> /usr/lib/systemd/system/nacos.service \
&& echo "Type=forking" >> /usr/lib/systemd/system/nacos.service \
&& echo "ExecStart=/usr/local/nacos/bin/startup.sh -m standalone" >> /usr/lib/systemd/system/nacos.service \
&& echo "[Install]" >> /usr/lib/systemd/system/nacos.service \
&& echo "WantedBy=multi-user.target" >> /usr/lib/systemd/system/nacos.service \
&& sed -i '2i\export JAVA_HOME=/usr/local/jdk' /usr/local/nacos/bin/startup.sh \
&& chmod 644 /usr/lib/systemd/system/nacos.service \
&& systemctl enable nacos.service \
######nacos end######
#########dockerfile-java content end#########
该镜像是根据以上dockerfile构建而来,wget jdk,nacos,tomcat,redis,mysql,nginx会受网络影响,也可能连接失效,根据实际情况修改连接
docker build -f ~/Downloads/dockerfile/dockerfile-java -t centos-java ~/Downloads/dockerfile
docker run -di --name centos-java -p 80:80 -p 3306:3306 -p 6379:6379 -p 8080:8080 -p 8848:8848 -p 8888:8888 --dns=8.8.8.8 --dns=114.114.114.114 --privileged=true centos-java /usr/sbin/init
docker exec -it centos-java /bin/bash
默认端口,启动即用
#主机开放端口
firewall-cmd --permanent --query-port=80/tcp ## 检查端口是否已开放
firewall-cmd --permanent --add-port=80/tcp ## 开放端口
firewall-cmd --permanent --query-port=3306/tcp ## 检查端口是否已开放
firewall-cmd --permanent --add-port=3306/tcp ## 开放端口
firewall-cmd --permanent --query-port=6379/tcp ## 检查端口是否已开放
firewall-cmd --permanent --add-port=6379/tcp ## 开放端口
firewall-cmd --permanent --query-port=8080/tcp ## 检查端口是否已开放
firewall-cmd --permanent --add-port=8080/tcp ## 开放端口
firewall-cmd --permanent --query-port=8848/tcp ## 检查端口是否已开放
firewall-cmd --permanent --add-port=8848/tcp ## 开放端口
firewall-cmd --permanent --query-port=8888/tcp ## 检查端口是否已开放
firewall-cmd --permanent --add-port=8888/tcp ## 开放端口
firewall-cmd --reload ## 刷新防火墙
默认服务都是开启的,如未开启可执行命令:
systemctl start nginx
systemctl start mysql
systemctl start redis
systemctl start tomcat
systemctl start nacos
#以主机ip为192.168.1.111为例访问spring boot项目:http://192.168.1.111:8888 #把springboot项目(端口设定8888)放到容器并启动后
#以主机ip为192.168.1.111为例访问nginx:http://192.168.1.111:80
#以主机ip为192.168.1.111为例访问mysql:192.168.1.111:3306 #账号root 密码123456
#以主机ip为192.168.1.111为例访问redis:192.168.1.111:6379 #密码123456
#以主机ip为192.168.1.111为例访问tomcat:http://192.168.1.111:8080
#以主机ip为192.168.1.111为例访问nacos:http://192.168.1.111:8848/nacos #账号nacos 密码nacos
Content type
Image
Digest
Size
1.2 GB
Last updated
almost 5 years ago
docker pull wei9699pk/centos-java