免费推广网站推荐,外贸推广平台哪个好,建设工程网站广州,用ps怎么做网站1.镜像 image#xff1a; 是一个文件#xff0c;包含了微型操作系统、核心代码#xff08;可执行程序#xff09;、依赖环境#xff08;库#xff09;
2.仓库 repository#xff1a; 存放镜像文件的地方
3.容器#xff1a; container #xff1a;是运行镜像的地方--…1.镜像 image 是一个文件包含了微型操作系统、核心代码可执行程序、依赖环境库
2.仓库 repository 存放镜像文件的地方
3.容器 container 是运行镜像的地方---》是进程 1.将go语言程序上传到centos7.9的系统里
gohtmlmysqlredis.zip [rootdocker ~]# mkdir /Dockerfile [rootdocker ~]# cp gohtmlmysqlredis.zip /Dockerfile/ [rootdocker ~]# cd /Dockerfile/ [rootdocker Dockerfile]# unzip gohtmlmysqlredis.zip 解压软件包 [rootdocker Dockerfile]# ls gohtmlmysqlredis.zip go.mod go.sum info.sql Readme.md server.go static templates server.go 核心go语言程序代码
Readme.md 了解程序包括安装和核心解析
info.sql 数据库里的表和基础数据
static 存放了网站的js和css代码
templates 存放了网站的静态页面
go.mod 本网站开发的时候使用的库有哪些 module go.mod 和go.sum有什么作用 mod是包管理sum是依赖关系管理 用于管理项目的依赖关系和版本信息确保项目的构建和部署的可重复性和一致性。 2.因为网站需要使用MySQL存放数据云服务器里启动一个MySQL容器 rootaliyun-sz:~# docker run -d -p 3316:3306 --name go-mysql-1 -e MYSQL_ROOT_PASSWORDsc123456 mysql:5.7.41 7f93b60b054ee2d3489cfae2226b787f276e76ac14116bc6d34bf4d77cc95983 在另外一台客户机上测试能否访问公网上的MySQL数据库 [rootdocker Dockerfile]# mysql -h 120.24.223.108 -uroot -psc123456 -P 3316 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 3 3.修改server.go核心程序的数据库配置
[rootdocker Dockerfile]# vim server.go const ( DB_USER root DB_PASSWORD sc123456 DB_NAME sanchuang DB_HOST tcp(8.138.156.120:3316)/ REDIS_HOST 8.138.156.120:6379 )修改为公网上的发布的数据库服务器地址和端口 4.部署golang环境
[rootdocker Dockerfile]# yum install epel-release golang -y
5.将go代码编译成二进制程序 本来有go.mod和go.sum直接到第六步 [rootdocker Dockerfile]# mv go.mod go.sum /root [rootdocker Dockerfile]# ls gohtmlmysqlredis.zip info.sql Readme.md server.go static templates [rootdocker Dockerfile]# go mod init web 产生go.mod 生成网站所需要的依赖的库写到go.mod文件里 go: creating new go.mod: module web go: to add module requirements and sums: go mod tidy [rootdocker Dockerfile]# ls
gohtmlmysqlredis.zip go.mod info.sql Readme.md server.go static templates
配置一个国内的go语言下载库的代理网站
[rootdocker Dockerfile]# go env -w GOPROXYhttps://goproxy.cn,direct
[rootdocker Dockerfile]#go mod tidy
[rootdocker Dockerfile]# ls
gohtmlmysqlredis.zip go.mod go.sum info.sql Readme.md server.go static templates 6.编译网站成一个二进制程序 [rootdocker Dockerfile]# go build -o server server.go [rootdocker Dockerfile]# ls gohtmlmysqlredis.zip go.mod go.sum info.sql Readme.md server是编译好的二进制程序 server.go static templates 7.编写dockerfile dockerfile 是制作镜像的配置文件 [rootdocker Dockerfile]# mkdir docker [rootdocker Dockerfile]# cd docker/ [rootdocker docker]# vim dockerfile FROM centos:7 #指定容器里使用的微型的系统是centos7 --基础镜像 WORKDIR /go #进入容器会进入这个目录工作目录在执行镜像的时候会自动创建--》家目录 ---》docker exec COPY . /go #复制宿主机当前目录下的所有的内容到容器的/go目录下 docker cp ENTRYPOINT [/go/server] #容器启动运行的时候执行的命令使用的是绝对路径执行/go/server程序 CMD [/go/server] #command 命令 和entrypoint二选一 entry可传参更好 8.复制二进制程序statictemplates文件夹到当前目录下 这几个必须放到一起 才能出效果 各自负责网页 文档等等 [rootdocker docker]# ls Dockerfile [rootdocker docker]# cp /Dockerfile/server . [rootdocker docker]# cp /Dockerfile/static/ . -r [rootdocker docker]# cp /Dockerfile/templates/ . -r [rootdocker docker]# ls Dockerfile server static templates 下载centos7镜像 传到系统里导入镜像
[rootdocker docker]# docker load -i centos7.9.tar
[rootdocker docker]# docker load -i redis.tar [rootdocker docker]# docker build -t scweb:1.0 . naming to docker.io/library/scweb:1.0 0.0s [rootdocker docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE scweb 1.0 162f3d33f84e 34 seconds ago 464MB 启动自己制作的镜像的容器
docker run -d -p 8080:8080 --name scweb-1 scweb:1.0 cali 2022 去浏览器访问
将基础数据导入到云服务器里的mysql容器里mysql -uroot -psc123456 -P 3316 -h 120.24.223.108 sanchuang info.sql
因为我们在内网的docker宿主机上远程连接到云服务器的mysql容器里需要一个mysql的客户端工具需要安装mariadb软件 模拟server.go 程序升级 --》增加了新功能
1.重新产生二进制程序 server
[rootdocker Dockerfile]# go build -o server server.go
2.如果静态页面有更新也需要复制到相关的目录 [rootdocker Dockerfile]# mkdir version2 [rootdocker Dockerfile]# cd version2/ [rootdocker version2]# cp /Dockerfile/docker/Dockerfile . [rootdocker version2]# cp /Dockerfile/server . [rootdocker version2]# cp /Dockerfile/static/ . -r [rootdocker version2]# cp /Dockerfile/templates/ . -r [rootdocker version2]# docker build -t scweb:1.1 .
[rootdocker version2]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
scweb 1.1 907d859bae91 14 seconds ago 222MB
scweb 1.0 162f3d33f84e 3 hours ago 464MB
3.删除旧的容器和镜像文件
[rootdocker version2]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9106914dc4c9 scweb:1.0 /go/server 27 minutes ago Up 27 minutes 0.0.0.0:8080-8080/tcp, :::8080-8080/tcp scweb-1
[rootdocker version2]# docker stop scweb-1
[rootdocker version2]# docker rm scweb-1
启动自己制作的镜像的容器
docker run -d -p 8080:8080 --name scweb-1 scweb:1.1 [rootfengdeyong images]# docker pull nginx/nginx-ingress
基础镜像 提供了一个最基本的环境或者某个程序所依赖的环境 ---》系统、java
alpine 是一个非常小的linux基础镜像 centos ubuntu debian busybox [rootdocker docker]# docker run -it --name alpine-2 alpine sh
/ # ls
bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
/ # cd /
/ # pwd
/ # exit [rootdocker docker]# mkdir /alpine
[rootdocker docker]# cd /alpine/
[rootdocker alpine]# cp /etc/yum.repos.d/Centos-7.repo .
[rootdocker alpine]# ls
Centos-7.repo Dockerfile [rootdocker alpine]# vim Dockerfile FROM centos:7.9 WORKDIR /sanchuang RUN rm -rf /etc/yum.repos.d/CentOS* COPY Centos-7.repo /etc/yum.repos.d/Centos-7.repo RUN mkdir /wang RUN cd /wang RUN echo hello,wang /wang/hello.txt RUN echo hello,world/wang/hello.txt CMD [bash,-c,sleep 3000] [rootdocker alpine]# docker build -t sccentos:7.9 .
[rootdocker alpine]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sccentos 7.9 a1ccf05ca8f8 37 seconds ago 516MB
alpine latest a606584aa9aa 5 weeks ago 7.8MB -d 在后台运行程序 -it 开启一个终端在前台运行 和-d不能同时写 bash 进入容器运行的程序 --rm 当容器退出的时候自动删除容器 [rootdocker alpine]# docker run -it --rm --name sccentos-1 sccentos:7.9 bash [root6eec939529fd sanchuang]# pwd /sanchuang [root6eec939529fd sanchuang]# cd /etc/yum.repos.d/ [root6eec939529fd yum.repos.d]# ls Centos-7.repo [rootdocker alpine]# docker build -t sccentos:7.8 .