编写一个执行docker-compose的脚本
时间: 2023-11-30 18:05:11 浏览: 199
好的,以下是一个执行 docker-compose 的脚本示例:
```bash
#!/bin/bash
# 进入 docker-compose.yml 所在目录
cd /path/to/docker-compose
# 检查 Docker 和 docker-compose 是否已安装
if ! command -v docker &> /dev/null
then
echo "Docker 未安装"
exit
fi
if ! command -v docker-compose &> /dev/null
then
echo "docker-compose 未安装"
exit
fi
# 使用 docker-compose 命令启动容器
docker-compose up -d
# 检查容器是否启动成功
if [ "$(docker ps -q -f name=my_container)" ]
then
echo "容器已启动"
else
echo "容器启动失败"
fi
```
在脚本中,首先进入 docker-compose.yml 所在目录,然后检查 Docker 和 docker-compose 是否已安装。如果未安装,则输出错误信息并退出脚本。如果已安装,则使用 docker-compose 命令启动容器,并检查容器是否启动成功。可以根据自己的实际情况修改脚本中的路径和容器名称。
相关问题
/app目录下有 frontend文件夹,里面是前端代码以及docker-compose.yml文件 帮我在frontend写一个脚本,执行npm install 跟npm run build:prod 然后在frontend文件夹中的Dockerfile文件中执行该脚本,并且使用nginx转发npm run build:prod打包生成的dist里的内容,80端口 请帮我编写docker-compose.yml、Dockerfile以及脚本
好的,我帮你编写docker-compose.yml、Dockerfile以及脚本。
首先是docker-compose.yml文件内容如下:
```yaml
version: '3'
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- 80:80
depends_on:
- nginx
nginx:
image: nginx:latest
ports:
- 80:80
volumes:
- ./frontend/dist:/usr/share/nginx/html
```
接下来是Dockerfile文件内容如下:
```Dockerfile
# 使用node镜像作为基础镜像
FROM node:14.17.0-alpine as build
# 设置工作目录
WORKDIR /app
# 将package.json和package-lock.json复制到工作目录
COPY package*.json ./
# 安装依赖
RUN npm install
# 将所有文件复制到工作目录
COPY . .
# 执行npm run build:prod命令
RUN npm run build:prod
# 使用nginx镜像作为基础镜像
FROM nginx:latest
# 将dist目录中的文件复制到nginx的默认静态文件目录
COPY --from=build /app/dist /usr/share/nginx/html
# 暴露80端口
EXPOSE 80
# 容器启动时运行nginx命令
CMD ["nginx", "-g", "daemon off;"]
```
最后是脚本(script.sh)内容如下:
```bash
#!/bin/bash
# 进入frontend目录
cd frontend
# 安装依赖
npm install
# 执行npm run build:prod
npm run build:prod
```
请确保在frontend文件夹下已经有package.json和package-lock.json文件,并且已经安装了npm和Docker。然后在frontend文件夹中执行以下命令:
```bash
chmod +x script.sh
./script.sh
```
这样脚本会执行npm install 和 npm run build:prod命令。
最后,在/app目录下执行以下命令启动服务:
```bash
docker-compose up -d
```
这样就完成了在frontend文件夹中执行npm install 和 npm run build:prod,并且使用nginx转发打包生成的dist目录内容的配置。
编写一个部署nginx,minio,redis,nacos,mysql的docker-compose详细配置脚本
好的,以下是一个部署nginx,minio,redis,nacos,mysql的docker-compose详细配置脚本:
```
version: "3.7"
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- minio
- nacos
minio:
image: minio/minio:latest
environment:
MINIO_ACCESS_KEY: access_key
MINIO_SECRET_KEY: secret_key
volumes:
- ./data:/data
ports:
- "9000:9000"
command: server /data
depends_on:
- redis
redis:
image: redis:latest
ports:
- "6379:6379"
nacos:
image: nacos/nacos-server:latest
ports:
- "8848:8848"
environment:
MODE: standalone
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: database
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./mysql:/var/lib/mysql
```
注意替换掉 `MINIO_ACCESS_KEY`、`MINIO_SECRET_KEY`、`MYSQL_ROOT_PASSWORD`、`MYSQL_DATABASE`、`MYSQL_USER`、`MYSQL_PASSWORD` 等环境变量的值为你需要的值。
此外,还需要在同级目录下创建一个名为 `nginx.conf` 的 Nginx 配置文件,示例如下:
```
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://minio:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
```
同样需要替换 `server_name` 为你的域名。
最后,在命令行中进入到该 `docker-compose.yml` 文件所在的目录,运行 `docker-compose up` 命令即可启动所有服务。
阅读全文