Dockerfile自动构建镜像

Dockerfile常用指令

Docker Instruction Description
FROM 指定基础镜像
RUN 在容器中执行命令
CMD 指定容器启动时,PID为1的进程(作为参数执行ENTRYPOINT,如果使用到)
ENTRYPOINT 指定容器启动时,PID为1的进程,如果使用到ENTRYPOINT,将CMD内容看做是参数来执行
ADD 将文件拷贝到容器中(如果是压缩包,则自动解压)
COPY 将文件拷贝到容器中(如果是压缩包,不会自动解压)
WORKDIR 指定容器的默认工作目录
VOLUME 声明一个持久化卷目录
EXPOSE 声明端口
ENV 指定环境变量
LABEL 给镜像打标签(用来说明镜像的作用)
MAINTAINER 镜像管理者标识(用来说明作者详细信息)

Dockerfile优化

1)优先选择基础镜像 alpine

2)合并RUN清理没有用的文件

3)清理yum缓存

自动化构建wordpress镜像

# 1.创建一个Dockerfile的存放目录
mkdir my_images/wp

#2.编写Dockerfile
vim Dockerfile

#拉镜像
FROM centos:7

#推送php源
COPY php.repo /etc/yum.repos.d/

#推送wp包
ADD wordpress.tgz /usr/share/nginx/html/wordpress/

#换源安装nginx,php,授权站点目录为apache
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo && \
yum install -y nginx && \
yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb && \
chown apache.apache -R /usr/share/nginx/html/wordpress/

#nginx配置文件
COPY nginx.conf /etc/nginx/nginx.conf

#推送启动文件
COPY start.sh  /

#暴露端口,设置cmd命令(start.sh)
EXPOSE 80/tcp
CMD ["/bin/shell","/start.sh"]
#设置env
ENV $WP_DB=wordpress $WP_USER=wordpress $WP_PASS=wordpress $WP_DB_HOST=localhost 
#整合一下

FROM centos:7
COPY php.repo /etc/yum.repos.d/
ADD wordpress.tgz /usr/share/nginx/html/wordpress/
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo && \
yum install -y nginx && \
yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb && \
chown apahce.apche -R /usr/share/nginx/html/wordpress/

COPY nginx.conf /etc/nginx/nginx.conf
COPY start.sh  /

EXPOSE 80/tcp
CMD ["/bin/shell","/start.sh"]

ENV WP_DB=wordpress \
    WP_USER=wordpress \
    WP_PASS=wordpress \
    WP_DB_HOST=localhost

#创建镜像
 docker build -t wp:v1 .
#启动容器后访问,可以看到,直接就访问数据库了
docker run -p 80:80 -d wp:v1

#wordpress和数据库同时启动测试,可以直接创建站点信息,成功
docker run -p 80:80 --link mysql57 -e WP_PASS=123 -e WP_DB_HOST=mysql57 -d wp:v1 

docker run \
    --name mysql57 \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123 \
    -e MYSQL_DATABASE=wordpress \
    -e MYSQL_USER=wordpress \
    -e MYSQL_PASSWORD=123 \
    -d mysql:5.7

使用Docker启动gitlab和jenkins

gitlab

#启动gitlab
docker run --detach \
  --publish 443:443 --publish 80:80 --publish 2222:22 \
  --name gitlab \
  --restart always \
  --volume /data/gitlab/config:/etc/gitlab \
  --volume /data/gitlab/logs:/var/log/gitlab \
  --volume /data/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

#获取密码  
 docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

访问:10.0.0.81:8080

jenkins

#启动jenkins  
docker run -d  --name jks -u root -p 29090:8080  -v /jenkins/scm/jks_home:/var/jenkins_home  jenkins/jenkins

#进入容器拿到密码
[root@docker01 ~]# docker exec -it jks /bin/bash
root@95021bb22eed:/# cat /var/jenkins_home/secrets/initialAdminPassword  
3f31811d52d445b08b4d72d752f3c2e0

#登录
10.0.0.101:29090
暂无评论

发送评论 编辑评论


				
上一篇
下一篇