docker-前端部署

本文详述了在Ubuntu系统中如何卸载旧版本Docker,通过APT安装Docker,设置国内镜像源,并提供了一步步的配置过程。此外,还介绍了如何安装CentOS镜像,启动Nginx容器,配置Nginx反向代理,并最终打包镜像。文章最后提及了Docker容器的管理和镜像导出方法。
摘要由CSDN通过智能技术生成

乌班图(Ubuntu)

卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

$ sudo apt-get remove docker \
               docker-engine \
               docker.io

使用APT安装

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

如果报错如下:

然后找到对应的端口号,kill掉就可以了

方法

 ps -aux    


列出进程
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1 0.0 0.0   4020   880 ?        Ss   15:27   0:00 /sbin/init
root         2 0.0 0.0      0     0 ?        S<   15:27   0:00 [kthreadd]

找到最后一列以 apt-get 开头的进程
 

然后输入
sudo kill 该进程的PID

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg


# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

然后,我们需要向 sources.list 中添加 Docker 软件源

$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


# 官方源
# $ echo \
#   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
#   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker

更新 apt 软件包缓存,并安装 docker-ce

$ sudo apt-get update

$ sudo apt-get install docker-ce docker-ce-cli containerd.io

启动 Docker

$ sudo systemctl enable docker
$ sudo systemctl start docker

建立 docker 用户组

 建立 docker 组:

$ sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

测试 Docker 是否安装正确

$ docker run --rm hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

镜像加速器

目前主流 Linux 发行版均已使用 systemd 进行服务管理,这里介绍如何在使用 systemd 的 Linux 发行版中配置镜像加速器。

请首先执行以下命令,查看是否在 docker.service 文件中配置过镜像地址。

$ systemctl cat docker | grep '\-\-registry\-mirror'

如果该命令有输出,那么请执行 $ systemctl cat docker 查看 ExecStart= 出现的位置,修改对应的文件内容去掉 --registry-mirror 参数及其值,并按接下来的步骤进行配置。

如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

安装centos

官方:CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。

说人话:就是一个操作系统品牌。
 

docker pull centos:7.9.2009

下载完毕之后,

# 运行docker容器
docker run -itd --name centos-test centos:7.9.2009

验证安装成功

# 通过docker ps命令查看容器的运行信息
docker ps


以下是安装详细教程;
docker安装 CentOS_孤独的小饼干的博客-CSDN博客_docker需要安装centos

安装Nginx

取最新版的 Nginx 镜像
docker pull nginx:latest

运行容器

docker run --name nginx-test -p 8080:80 -d nginx

hostname -I | awk '{print $1}'
找到ip地址
之后访问http:ip地址:8080

出现一下图片,即访问成功

创建宿主主机上文件夹

# 创建挂载目录
mkdir -p /home/nginx/conf /home/nginx/log /home/nginx/html

容器中的nginx.conf文件和conf.d文件夹复制到宿主机


# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

删除现在运行nignx的容器

# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a

# 关闭该容器
docker stop nginx

# 删除该容器
docker rm nginx
 
# 删除正在运行的nginx容器
docker rm -f 容器Id

运行nginx

docker run \
-p 8080:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

或者

docker run -p 8080:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest

访问ip地址端口号8080,然后就可以看到结果了

 然后,打包vue项目当道宿机上的html【我这边是html】文件里面

 最后配置,/home/nginx/conf/conf.d中的default.conf文件

我的是以下配置

server {
	listen 80;
	server_name _;
	charset utf-8;
	access_log  /var/log/nginx/discuz-front_end.acess.log;

	location @rewrites {
		rewrite ^/(discuz)/(.+)$ /$1/index.html last;
	}

	location ^~ /discuz {
		rewrite /discuz/(.*) /$1  break;
        # root 配置的路径是:需要进入nginx 
        # 命令:docker exec -it 91a81b1b15be /bin/bash
        # whereis nginx 之后就有nginx路径
        # 其中 最后一个路径就有 /usr/share/nginx,然后切换到这个路径上,cd 到该路径下的文件里面,就是存储的打开的项目包;把这个路径copy到下面配置中就OK了;
		root /usr/share/nginx/html;
		#index index.html;
		try_files $uri $uri/ /index.html @rewrites;
		add_header Cache-Control "no-cache, no-store";
		client_body_buffer_size 128k;
		proxy_buffer_size 128k;
		proxy_buffers   32 32k;
		proxy_busy_buffers_size 128k;
		proxy_temp_file_write_size 128k;
		client_max_body_size 100m;
		proxy_set_header Host  $host;
		proxy_set_header   HTTP_CLIENT_IP        $remote_addr;
		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
	}
	
	location /discuz/api/ {
        # 配置访问api的代理
		proxy_pass http://discuz-api.dev.shqstec.com/discuz/api/;
		#proxy_pass http://172.19.218.250:8888/discuzz-service-1.0-SNAPSHOT/;
		#proxy_pass http://127.0.0.1:8820;
		client_max_body_size 100m;
        }

	#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   html;
	}
}

然后进入nginx容器中

docker exec -it 容器id /bin/bash

 然后找到nginx在哪里,

whereis nginx

一般nginx路径在:/usr/local/nginx/

启动nginx

/nginx路径

立即停止nginx:

nginx路径 -s stop

优雅停止nginx:

nginx路径 -s quit

可能中间报错可以用到的命令

重启dokcer命令

启动:
systemctl start docker
守护进程重启:
systemctl daemon-reload
重启docker服务:
systemctl restart docker / service docker restart
关闭:
docker service docker stop / docker systemctl stop docker

重启容器命令

docker restart 容器id

Docker 安装 Nginx 容器 (完整详细版)_Touch&的博客-CSDN博客_docker安装nginx

docker 安装 Nginx 并配置反向代理_疯狂的狮子Li的博客-CSDN博客_docker nginx 反向代理

最后导出镜像

docker commit 制作镜像

docker commit -m="描述信息" -a="作者名字" 容器id 镜像名字:版本号

最后保存镜像到指定的位置

docker save 镜像名字:版本>/路径/存储的文件名字.tar

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在EC2上使用Docker Compose部署前后端分离项目,您可以按照以下步骤操作: 1. 在EC2实例上安装DockerDocker Compose。 - 运行以下命令安装Docker: ```shell sudo apt update sudo apt install docker.io ``` - 安装完Docker后,您可以运行以下命令安装Docker Compose: ```shell sudo apt install docker-compose ``` 2. 在EC2实例上创建一个项目文件夹,并将前端和后端代码分别放入两个子文件夹中。 3. 在项目文件夹中创建一个名为 `docker-compose.yml` 的文件,并使用以下示例配置进行编辑: ```yaml version: '3' services: frontend: build: ./frontend ports: - 80:80 backend: build: ./backend ports: - 8000:8000 ``` 这个示例配置了两个服务,一个是前端服务(使用端口80),另一个是后端服务(使用端口8000)。您可以根据自己的项目需求进行修改。 4. 在项目文件夹中打开终端,并使用以下命令构建和启动Docker容器: ```shell sudo docker-compose up -d ``` 这将使用Docker Compose根据配置文件构建和启动两个容器,分别运行前端和后端应用程序。 5. 确保EC2实例的安全组配置允许通过所需的端口访问您的应用程序。 现在,您的前后端分离项目应该已经成功部署在EC2实例上了。您可以使用实例的公共IP地址或域名加上相应的端口访问您的应用程序。 请注意,这只是一个简单的示例配置,实际部署过程可能会根据您的项目需求有所不同。您可能需要进一步配置数据库、网络等方面,以适应您的项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值