请用docker-compose写出下面这串代码: docker run --name es-s2 --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /mydata/se_cluster/es-s2/config:/usr/share/elasticsearch/config -v /mydata/se_cluster/es-s2/data:/usr/share/elasticsearch/data -v /mydata/se_cluster/es-s2/plugins:/usr/share/elasticsearch/plugins -v /mydata/se_cluster/es-s2/logs:/usr/share/elasticsearch/logs -e TAKE_FILE_OWNERSHIP="true" -d elasticsearch:7.9.0
时间: 2023-07-17 16:53:21 浏览: 208
version: '3'
services:
es-s2:
container_name: es-s2
restart: always
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
- TAKE_FILE_OWNERSHIP=true
volumes:
- /mydata/se_cluster/es-s2/config:/usr/share/elasticsearch/config
- /mydata/se_cluster/es-s2/data:/usr/share/elasticsearch/data
- /mydata/se_cluster/es-s2/plugins:/usr/share/elasticsearch/plugins
- /mydata/se_cluster/es-s2/logs:/usr/share/elasticsearch/logs
image: elasticsearch:7.9.0
detach: true
相关问题
请用docker-compose写出下面这段代码docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 \ -v /home/soft/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /home/soft/ES/data2:/usr/share/elasticsearch/data \ --name elasticsearch02 elasticsea
好的,请看下面的docker-compose.yml文件:
```
version: '3'
services:
elasticsearch02:
image: elasticsearch
environment:
- "ES_JAVA_OPTS=-Xms256m -Xmx256m"
ports:
- "9201:9201"
- "9301:9301"
volumes:
- /home/soft/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /home/soft/ES/data2:/usr/share/elasticsearch/data
container_name: elasticsearch02
restart: always
```
你可以使用`docker-compose up -d`命令来启动容器。
我的代码跟docker-compose.yml文件放在/app目录下 /app/frontend存放前端代码 /app/backend存放后端代码 我想直接在/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` 服务的 `volumes` 部分修改如下:
```yaml
version: '3'
services:
frontend:
build:
context: .
dockerfile: frontend/Dockerfile
ports:
- 8010:80
volumes:
- ./frontend:/app/frontend
restart: always
```
然后,在 `frontend` 的 `Dockerfile` 文件中,进行相应的修改:
```dockerfile
FROM node:16.18.1
WORKDIR /app/frontend
COPY package*.json ./
RUN npm install
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;"]
```
现在,当你使用 `docker-compose up` 启动容器时,它将会将本地的 `/app/frontend` 目录映射到容器内的 `/app/frontend` 目录,并在容器内部进行安装和构建操作。
请注意,这里假设 `docker-compose.yml` 文件和 `frontend` 目录以及 `backend` 目录都在同一级目录下的 `/app` 目录中。如果不是,请相应调整 `docker-compose.yml` 和 `Dockerfile` 中的路径。
阅读全文