第二期:Dockerfile文件的使用

这期我们来学习如何通过编写dockerfile文件自创docker镜像

第一个简单的Dockerfile

FROM alpine:latest
MAINTAINER  RyanLoi
CMD echo 'hollo docker'

MAINTAINER指令在Dockerfile中已经被弃用。在Docker 1.13版本之后,MAINTAINER指令已被LABEL指令所取代,用于为镜像添加维护者信息。
之前可以使用

MAINTAINER YourName <your.email@example.com>

更新后的Dockerfile片段:

LABEL maintainer="YourName <your.email@example.com>"

创建以下Dockerfile后

FROM alpine:latest
LABEL maintainer="RyanLoi"
CMD echo 'hollo docker'

通过Dockerfile build一个自定义名字的镜像(image)

docker build -t test_docker

docker image就可以看到构建的镜像(image)
然后docker run test_docker就可以运行新构建的镜像(image)

第二个Dockerfile

FROM nginx:1.20.2 #使用nginx的1.20.2镜像 也可以使用latest 是最新的
LABEL maintainer="RyanLoi" 
COPY index.html /usr/share/nginx/html/ #Dockerfile文件要有一个index.html文件 复制这个文件到nginx运行目录下面
EXPOSE 80

简单解析下上面的代码

使用docker build构建image 如果文件名不是默认的Docker 可以使用-f 指定文件名 我这里使用的是Dockerfile2 最后的.是路径

docker build -t hello_docker -f Dockerfile2 .

构建的hello_docker image
通过镜像运行容器 --name是给容器命名

docker run  -p 8080:80 --name ryanloi_container -d hello_docker

这个时候访问localhost:8080就可以打开刚自定义的index.html啦

关于Dockerfile的命令

命令用途
FROMbaes image
RUN执行命令
ADD添加文件
COPY拷贝文件
CMD执行命令
EXPOSE暴露端口
WORKDIR指定路径
LABEL key=value添加元数据到镜像
ENV设定环境变量
ENTRYPOINT容器入口
USER指定用户
VOLUMEmount point
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
我想将frontend 也是用volumes,将其映射到/app/frontend目录,在/app/frontend下install以及build,如何实现 docker-compose.yml文件: version: '3' services: frontend: build: context: ./frontend dockerfile: Dockerfile ports: - 8010:80 restart: always backend: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: python manage.py runserver 0.0.0.0:8000 ports: - 8011:8000 restart: always celery-worker: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server worker -l info --pool=solo --concurrency=1 depends_on: - redis - backend restart: always celery-beat: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler depends_on: - redis - backend restart: always redis: image: redis:latest ports: - 6379:6379 restart: always mysql: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=sacfxSql258147@ ports: - 8016:3306 volumes: - ./mysql:/var/lib/mysql restart: always frontend:dockerfile文件 FROM node:16.18.1 WORKDIR /app/frontend COPY package*.json ./ RUN npm install COPY . . RUN npm run build:prod FROM nginx:latest COPY --from=0 /app/frontend/dist/ /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
07-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ryan.Loi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值