docker部署项目 mysql、redis、nginx安装和映射宿主机、创建应用镜像发布
- CentOS Docker 安装
- 安装 Docker Engine-Community 使用 Docker 仓库进行安装
- 启动 Docker
- mysql安装
- redis安装
- nginx安装
- 创建nginx宿主机文件夹
- nginx nginx.conf和default.conf从容器复制到宿主机
- 创建network
- 删除nginx容器
- 创建nginx容器并 映射到宿主机
- 创建Dockerfile文件和项目放置同一个文件夹下
- cd 到项目文件夹下运行
- nginx配置
- 重启nginx
- 访问成功
CentOS Docker 安装
curl -sSL https://get.daocloud.io/docker | sh
安装 Docker Engine-Community 使用 Docker 仓库进行安装
sudo yum-config-manager
--add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.ioce.repo
启动 Docker
sudo systemctl start docker
mysql安装
docker pull mysql:5.7.35
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.35
redis安装
docker pull redis:latest
docker run -itd --name redis -p 6379:6379 redis --requirepass "123456"
nginx安装
docker pull nginx:latest
docker run --name nginx -p 80:80 -d nginx
创建nginx宿主机文件夹
mkdir -p /home/nginx/{conf/conf.d,html,logs}
nginx nginx.conf和default.conf从容器复制到宿主机
//9d959639b08c 容器id
docker cp 9d959639b08c:/etc/nginx/nginx.conf ./
docker cp 9d959639b08c:/etc/nginx/conf.d/default.conf ./
创建network
docker network create mynetwork
docker run -it --network=mynetwork --name=bbox1 busybox
删除nginx容器
docker rm -f nginx
创建nginx容器并 映射到宿主机
docker run --name nginx --network=mynetwork -p 80:80 -d
-v /home/nginx/logs:/var/log/nginx
-v /home/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /home/nginx/html:/usr/share/nginx/html nginx
创建Dockerfile文件和项目放置同一个文件夹下
//Dockerfile配置
//ADD 包名.jar /app.jar 自己的包名
FROM java:8
# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
#同步时间
RUN cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 将jar包添加到容器中并更名为app.jar
ADD 包名.jar /app.jar
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
cd 到项目文件夹下运行
//docker rm -f 包名 删除容器,容器不存在要去掉不然会报错
//docker rmi 包名 删除镜像,镜像不存在要去掉不然会报错
//-v /home/uploadPath:/home/uploadPath 本地存储图片映射路径
//注意包名填写
docker rm -f 包名 && docker rmi 包名 && docker build -t 包名 . && docker run -d -p 8081:8081 -v /home/uploadPath:/home/uploadPath --restart=always --name 包名 包名 && docker logs -f 包名
nginx配置
upstream prod-api {
server ip:8081;
}
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#后端项目
location /prod-api/ {
proxy_pass http://prod-api/;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_connect_timeout 10;
#proxy_read_timeout 10;
#proxy_send_timeout 10;
client_max_body_size 100m;
}
#前端项目
location /base_web/ {
root /usr/share/nginx/html;
try_files $uri $uri/ /base_web/index.html;
index /base_web/index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ .php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /.ht {
# deny all;
#}
}
重启nginx
docker restart nginx
访问成功
//注意修改ip
http://ip/base_web/