编 写 Dockerfile 文 件 构 建 chinaskill-redis:v1.1 镜 像 , 要 求 使 用 基 础 镜 像 centos:centos7.9.2009,安装 Redis 服务,设置 Redis 免密,并关闭保护模式,开放端口:6379, 并设置服务开机自启
时间: 2023-05-18 16:02:38 浏览: 127
FROM centos:centos7.9.2009
RUN yum -y update && yum -y install epel-release && yum -y install redis
RUN sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf
RUN sed -i 's/protected-mode yes/protected-mode no/' /etc/redis.conf
RUN echo "requirepass ''" >> /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server"]
相关问题
在master节点上编写/root/redis/Dockerfile文件,基于提供的软件包gpmall-single.tar构建chinaskill-redis:v1.1镜像,具体要求如下: (1)基础镜像:centos:centos7.5.1804; (2)作者:Chinaskill; (3)修改配置文件中的bind 127.0.0.1为bind 0.0.0.0; (4)设置Redis免密,并关闭保护模式; (5)开放端口:6379; (6)设置服务开机自启。
好的,这是一个关于Dockerfile的问题,我可以回答。首先,您需要在master节点上创建/root/redis/Dockerfile文件,并在其中添加以下内容:
```
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
ADD gpmall-single.tar /usr/local/
RUN sed -i 's/bind 127...1/bind .../g' /usr/local/redis/redis.conf
RUN echo "requirepass 123456" >> /usr/local/redis/redis.conf
RUN echo "protected-mode no" >> /usr/local/redis/redis.conf
EXPOSE 6379
CMD ["/usr/local/redis/bin/redis-server", "/usr/local/redis/redis.conf"]
```
然后,您可以使用以下命令构建chinaskill-redis:v1.1镜像:
```
docker build -t chinaskill-redis:v1.1 /root/redis/
```
最后,您可以使用以下命令启动Redis容器:
```
docker run -d --name redis -p 6379:6379 --restart always chinaskill-redis:v1.1
```
这样,您就成功地构建了一个基于centos:centos7.5.1804的Redis镜像,并启动了一个Redis容器。
我想将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;"]
要将前端的代码映射到容器内的`/app/frontend`目录,并在容器内进行安装和构建,可以通过在`docker-compose.yml`文件中为`frontend`服务添加一个卷来实现。更新后的`docker-compose.yml`文件如下所示:
```yaml
version: '3'
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- 8010:80
volumes:
- ./frontend:/app/frontend
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`目录映射到容器内的`/app/frontend`目录。然后,在容器内部构建过程中,使用`/app/frontend`目录中的代码进行安装和构建。
请注意,这里假设`docker-compose.yml`文件和`frontend`目录在同一级目录下。如果不是,请相应调整`volumes`中的路径。