Dockerfile

2019-07-24  本文已影响0人  saoraozhe3hao

案例:Nginx Dockerfile

FROM nginx
ADD ./web /usr/share/nginx/html   # 需要准备前端的构建产物,放入web目录
COPY ./default.conf /etc/nginx/conf.d/  # 需要准备好 nginx的配置文件
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]

案例:Java Dockerfile

FROM centos
RUN yum install -y java-1.8.0-openjdk
COPY ./app.jar /root/   # 需要准备好 java的构建产物jar文件
EXPOSE 80

案例:mysql Dockerfile

FROM mysql
# /root 下放一个 .my.cnf,里面记录用户名密码 即可 免密登录mysql,才能用脚本操作数据库
COPY ./.my.cnf /root/
# 拷贝目录,相当于把源目录下的文件 拷贝 容器内一个同名新目录
COPY ./sql /root/sql/

案例:一键部署 nginx、java、mysql

1、构建并导出镜像

#! /bin/bash
set -e
# 安装并启动docker
yum install docker
service docker start
# 清除上次打的镜像
set +e
docker stop mysql java web
docker rm mysql java web
docker rmi mysql java web
# 用Dockerfile构建镜像 
set -e
docker build -t mysql -f ./mysql.dockerfile .
docker build -t java -f ./java.dockerfile .
docker build -t web -f ./web.dockerfile .
# 导出镜像
docker save -o ./deploy/mysql.tar mysql
docker save -o ./deploy/java.tar java
docker save -o ./deploy/web.tar web

2、使用镜像

#! /bin/bash
set -e
# 安装并启动docker
yum install docker
service docker start
# 清除
set +e
docker stop mysql java web
docker rm mysql java web
docker rmi mysql java web
# 载入镜像文件
set -e
docker load < contract-guard-mysql.tar
docker load < contract-guard-java.tar
docker load < contract-guard-web.tar
# 创建容器
set -e
docker run --name mysql -e MYSQL_ROOT_PASSWORD=*** -d mysql
docker run --name java -tdi java
docker run --name web -tdi -p 80:80 web
sleep 30  # 等待30秒,确保mysql启动完成,才能正常连接
# 配置网络
set +e
docker network rm my-bridge
set -e
docker network create -d bridge my-bridge
docker network connect --alias mysql my-bridge mysql
docker network connect --alias java my-bridge java
docker network connect --alias web my-bridge web
# 启动程序
docker exec mysql /bin/bash /root/sql/init.sh  # 初始化数据库
sleep 30  # 等待30秒,数据库初始化完成
docker exec -d java java -jar /root/app.jar --spring.profiles.active=docker
docker start web

mysql初始化shell脚本 init.sh

#! /bin/bash
set -e
mysql < /root/sql/init.sql
mysql db1 < /root/sql/tables.sql

mysql初始化sql脚本 init.sql

create database db1;
上一篇下一篇

猜你喜欢

热点阅读