制作docker镜像

上传已经制作好的go语言程序(网站)go+html+mysql+redis.zip

[root@docker ~]# ls
anaconda-ks.cfg  go+html+mysql+redis.zip 

[root@docker ~]# mkdir  /Dockerfile
[root@docker ~]# cp go+html+mysql+redis.zip /Dockerfile/
[root@docker ~]# cd /Dockerfile/
[root@docker Dockerfile]# ls
go+html+mysql+redis.zip

安装unzip并解压

[root@docker Dockerfile]# yum  install  unzip  -y  
[root@docker Dockerfile]# unzip go+html+mysql+redis.zip   

[root@docker Dockerfile]# ls
go+html+mysql+redis.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   定义当前项目的模块路径和依赖关系
go.sum 记录项目依赖项的哈希值

[root@docker Dockerfile]# tree
.
├── go+html+mysql+redis.zip
├── go.mod
├── go.sum
├── info.sql
├── Readme.md
├── server.go
├── static
│   ├── add_student.js
│   ├── login.js
│   ├── search_student.js
│   └── styles.css
└── templates
    ├── add_student.html
    ├── guid.html
    ├── login.html
    └── search_student.html

云服务器中启动MySQL容器

******是设置的容器密码

[root@aliyun-guangzhou ~]# docker  run  -d  -p  3316:3306  --name go-mysql-1  -e  MYSQL_ROOT_PASSWORD='******'   mysql:5.7.41

测试MySQL能否访问

123.45.67.89为云服务器的公网ip

[root@docker Dockerfile]# mysql  -h 123.45.67.89 -uroot -p'******' -P 3316

出现以下界面说明测试连接成功

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.41 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.02 sec)

MySQL [(none)]> 

修改server.go核心程序的数据库配置

[root@docker Dockerfile]# vim server.go 

const ( 
        DB_USER     = "root"
        DB_PASSWORD = "******"
        DB_NAME     = "sanchuang"
        DB_HOST         = "tcp(123.45.67.89:3316)/"
        REDIS_HOST      = "123.45.67.89:6379"
)

将go代码编译成二进制程序

[root@docker Dockerfile]# yum  install  epel-release  -y

[root@docker Dockerfile]# yum  install  golang  -y

[root@docker Dockerfile]# mv go.mod go.sum  /root
[root@docker Dockerfile]# ls
go+html+mysql+redis.zip  info.sql  Readme.md  server.go  static  templates

配置一个国内的go语言下载库的代理网站

[root@docker Dockerfile]# go env -w GOPROXY=https://goproxy.cn,direct

产生go.mod 生成网站所需要的依赖的库,写到go.mod文件里

[root@docker Dockerfile]# go mod init web  
[root@docker Dockerfile]# ls
go+html+mysql+redis.zip  
go.mod  info.sql  Readme.md  server.go  static  templates

执行go mod tidy后产生go.sum

[root@docker Dockerfile]#go mod tidy

[root@docker Dockerfile]# ls
go+html+mysql+redis.zip  go.mod  
go.sum  info.sql  Readme.md  server.go  static  templates

编译网站成一个二进制程序

[root@docker Dockerfile]# go build -o server  server.go

[root@docker Dockerfile]# ls
go+html+mysql+redis.zip  go.mod  go.sum  info.sql  Readme.md
 server  server.go  static  templates

编写Dockerfile
    Dockerfile 是制作镜像的配置文件

#指定容器里使用的微型的系统是centos7  -->基础镜像

FROM centos:7 

#进入容器时会进入这个工作目录,在执行镜像的时候会自动创建 -->家目录 --> docker exec 

WORKDIR /go      

#复制宿主机当前目录下的所有的内容到容器的/go目录下  --> docker cp
COPY . /go      

 #容器启动运行的时候执行的命令,使用的是绝对路径执行/go/server程序
ENTRYPOINT ["/go/server"]

#command 命令
CMD ["/go/server"]  

[root@docker Dockerfile]# mkdir  docker
[root@docker Dockerfile]# cd docker/
[root@docker docker]# ls
[root@docker docker]# vim Dockerfile
FROM centos:7.9   
WORKDIR /go       
COPY . /go       
ENTRYPOINT ["/go/server"]  
CMD ["/go/server"]  

[root@docker docker]# ls
Dockerfile

复制二进制程序+static+templates文件夹到目录下

[root@docker docker]# cp /Dockerfile/server .
[root@docker docker]# cp /Dockerfile/static/ . -r
[root@docker docker]# cp /Dockerfile/templates/  .  -r
[root@docker docker]# ls
Dockerfile  
server  static  templates

制作镜像

[root@docker docker]# docker build -t  scweb:1.0   . 

查看镜像

[root@docker docker]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE

scweb        1.0       162f3d33f84e   34 seconds ago   464MB
nginx        latest    bc649bab30d1   9 months ago     187MB
mysql        5.7.41    0018a8d83892   16 months ago    455MB
redis        alpine    5130e5ba7d24   17 months ago    29.9MB
centos       7       eeb6ee3f44bd   2 years ago      204MB

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值