2020综合实践 第二次综合实践作业
web容器服务
使用nginx,标明镜像作者信息,设定自己的web存放目录,请将默认的监听端口80更改为你自定义的端口,并且声明暴露的端口,容器启动时,能直接进入web代码的存放目录
拉取nginx镜像
sudo docker pull nginx:latest
创建容器并获取配置文件
sudo docker run --name=my_nginx1 -p 8080:80 -d nginx
sudo docker exec -it [容器id] /bin/bash
cat /etc/nginx/conf.d/default.conf
修改配置文件
将80端口改为4040并将root修改为web存放目录
server {
listen 4040;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/my_html;
index index.html index.htm;
}
#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;
#}
}
创建Dockerfile文件
#基础镜像
FROM nginx
# 复制配置文件和自己的web存放目录
copy default.conf /etc/nginx/conf.d/
copy index.html /usr/my_html/
#维护者信息
MAINTAINER ljy 1730166565@qq.com
#对外暴露端口
expose 4040
构建自己的nginx镜像
先停止之前的容器
sudo docker stop [容器id]
把修改过的配置文件default.conf
和自己写的index.html
文件放在dockerfile
所在的目录下(建议单独搞一个目录),并在该目录下打开终端,执行build命令
sudo docker build -t mynginx .
用该镜像构建一个容器
sudo docker run --name=my_nginx3 -d -p 8080:4040 mynginx
在浏览器中查看8080端口
数据库容器服务
可选择Mysql,Mariadb等,要求标明镜像作者信息,为了方便维护,需要能够查看容器内的配置信息,包括但不限于网络、应用配置文件等。在环境变量中设置好数据库的root密码且不允许空密码登录,创建一个测试数据库,指定用户名和密码。
拉取mysql镜像
sudo docker pull mysql:5.7
创建mysql镜像所需文件
1.创建Dockerfile
FROM mysql:5.7
#维护者信息![](https://img2020.cnblogs.com/blog/1322748/202004/1322748-20200424143922685-864176566.png)
MAINTAINER ljy-1730166565@qq.com
#禁止免密登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
#root密码
ENV MYSQL_ROOT_PASSWORD=mysql
#将所需文件放到容器中
COPY setup.sh /mysql/setup.sh
COPY schema.sql /mysql/schema.sql
COPY privileges.sql /mysql/privileges.sql
#设置容器启动时执行的命令
CMD ["sh", "/mysql/setup.sh"]
2.容器启动脚本setup.sh
#!/bin/bash
set -e
#查看mysql服务的状态,方便调试,这条语句可以删除
echo `service mysql status`
echo '1.启动mysql....'
#启动mysql
service mysql start
sleep 3
echo `service mysql status`
echo '2.开始导入数据....'
#导入数据
mysql < /mysql/schema.sql
echo '3.导入数据完毕....'
sleep 3
echo `service mysql status`
#重新设置mysql密码
echo '4.开始修改密码....'
mysql < /mysql/privileges.sql
echo '5.修改密码完毕....'
#sleep 3
echo `service mysql status`
echo `mysql容器启动完毕,且数据导入成功`
tail -f /dev/null
3.需要导入数据的mysql脚本命令schema.sql
-- 创建数据库
CREATE database `mysql_docker` default character set utf8 collate utf8_general_ci;
use mysql_docker;
-- 建表
DROP TABLE IF EXISTS user;
CREATE TABLE user (
`id` varchar(20) NOT NULL,
`name` varchar(40) DEFAULT NULL,
`sex` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- 插入数据
INSERT INTO user (`id`, `name`, `sex`)
VALUES
('031702126','ljy','男');
4.mysql权限设置命令privileges.sql
use mysql;
select host, user from user;
-- 因为mysql版本是5.7,因此新建用户为如下命令:
create user ljy identified by '123456';
-- 将docker_mysql数据库的权限授权给创建的ljy用户,密码为123456:
grant all on mysql_docker.* to ljy@'%' identified by '123456' with grant option;
-- 这一条命令一定要有:
flush privileges;
构建自己的mysql镜像
sudo docker build -t mysql2 .
使用该镜像创建运行一个容器
sudo docker run --name=msql -p 8000:3200 -d mysql2
进入容器并使用之前的用户名密码进入数据库
sudo docker exec -it msql /bin/bash
mysql -u ljy -p
运行情况
查看容器内配置信息
sudo docker inspect msql