typora-copy-images-to: pics
#!/usr/bin/env bash
# 清理
sudo echo "清理当前宿主机内存"
sudo echo 1 > /proc/sys/vm/drop_caches
sudo echo 2 > /proc/sys/vm/drop_caches
sudo echo 3 > /proc/sys/vm/drop_caches
# 检测
sudo echo "查看系统版本"
sudo cat /etc/redhat-release
sudo echo "查看内核"
sudo uname -sr
# 配置环境变量实现适配
sudo echo "确定环境变量"
export dns_server=192.168.200.10
export network_name=ens160
export docker_version=18.06.3
# 修改主机配置
sudo echo "修改dns"
sudo nmcli con mod ${network_name} ipv4.dns "${dns_server}"
sudo nmcli con up ${network_name}
echo "修改主机名称为ip名称"
sudo hostnamectl set-hostname `ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6 | awk '{print $2}' | tr -d "addr:"`
echo "关闭selinux"
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
echo "修改时区为上海"
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "修改系统语言环境"
sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile;source /etc/profile
echo "同步时间"
sudo yum install -y ntp
sudo ntpdate pool.ntp.org
echo "kernel性能调优:"
echo "1、修复可能出现的网络问题"
echo "2、修改最大进程数"
sudo cat >> /etc/sysctl.conf<
curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
yum install -y wget
#!/usr/bin/env bash
echo "检查docker是否安装"
docker version
echo "检查磁盘是否够用"
df -h /data
echo "创建数据挂载点"
rm -rf /data/tristan/gitlab/config /data/tristan/gitlab/logs /data/tristan/gitlab/data
mkdir -p /data/tristan/gitlab/config /data/tristan/gitlab/logs /data/tristan/gitlab/data
echo "拉取gitlab镜像"
docker pull gitlab/gitlab-ce:latest
echo "运行镜像"
docker run --detach \
--hostname gitlab.xxx.com \
--publish 80:80 --publish 2289:22 \
--name gitlab \
--restart always \
--volume /data/tristan/gitlab/config:/etc/gitlab \
--volume /data/tristan/gitlab/logs:/var/log/gitlab \
--volume /data/tristan/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
echo "查看镜像运行情况"
docker logs -f gitlab
# 创建本地文件夹
rm -rf /data/tristan/nexus
mkdir -p /data/tristan/nexus && chmod 777 /data/tristan/nexus
# 启动容器
docker stop nexus
docker rm nexus
docker run -d --restart always -p 8081:8081 --name nexus -v /data/tristan/nexus:/nexus-data sonatype/nexus3:3.15.2
# 查看镜像启动情况
docker logs -f nexus
http://xxx.xxx.xxx.xxx:8081 admin/admin123
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jSNSCZ9C-1571736592106)(pics\1553439067920.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2bPbRj3a-1571736592108)(pics\1553439082851.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4R6A83PW-1571736592116)(pics\1553439102317.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dl5Tg3RO-1571736592118)(pics\1553439195346.png)]
代理地址为:
http://maven.aliyun.com/nexus/content/groups/public
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-57so4Lbm-1571736592120)(pics\1553439274088.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WnC9gBhD-1571736592122)(pics\1553440231368.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BOrfqwAz-1571736592124)(pics\1553439304007.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fd6pS388-1571736592126)(pics/1553500896316.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gSvCOpws-1571736592129)(pics/1553500991740.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hzQaeWo9-1571736592131)(pics/1553501030700.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBfS74ZV-1571736592132)(pics/1553501080059.png)]
settings.xml
nexus-snapshots
ebuy-cloud-test
ebuy-cloud-test
nexus-releases
*
http://192.168.71.220:8081/repository/maven-public/
nexus-snapshots
*
http://192.168.71.220:8081/repository/maven-snapshots/
nexus-snapshots
nexus-snapshots
nexus-snapshots
http://192.168.71.220:8081/repository/maven-snapshots/
nexus-snapshots
mkdir -p /data/harbor-install /data/harbor /data/harbor-install/ssl && cd /data/harbor-install
wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.0.tgz
tar xvf harbor-online-installer-v1.8.0.tgz
cd harbor
# 修改配置文件
vi harbor.yml
hostname: dockerregistry.local.yibainetwork.com
https.ssl_cert = /data/harbor-install/ssl/dockerregistry.local.yibainetwork.com.pem
https.ssl_cert_key = /data/harbor-install/ssl/dockerregistry.local.yibainetwork.com.key
harbor_admin_password: Tristan4001
database.password: Tristan4001
data_volume: /data/harbor
./install.sh
验证使用
docker login xxx.com
username
password
docker pull hello-world
docker tag hello-word xxx.com/test/test:0.0.1
docker push xxx.com/test/test:0.0.1
docker pull xxx.com/test/test:0.0.1
https://ram.console.aliyun.com/groups
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ULFN8b6-1571736592134)(C:\Users\tristan\Desktop\从零做CI\pics\1571313567727.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MYU6JWBZ-1571736592135)(C:\Users\tristan\Desktop\从零做CI\pics\1571313687842.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r4SzGHb9-1571736592137)(C:\Users\tristan\Desktop\从零做CI\pics\1571313707839.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RsJmJMgl-1571736592138)(C:\Users\tristan\Desktop\从零做CI\pics\1571313738659.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hy6tYWpp-1571736592140)(C:\Users\tristan\Desktop\从零做CI\pics\1571313787443.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfu8sBfr-1571736592142)(C:\Users\tristan\Desktop\从零做CI\pics\1571313800517.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6KShA6Vy-1571736592144)(C:\Users\tristan\Desktop\从零做CI\pics\1571313816963.png)]
https://cr.console.aliyun.com/cn-shenzhen/instances/repositories
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLmWrz2U-1571736592145)(C:\Users\tristan\Desktop\从零做CI\pics\1571313873094.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HobFLp06-1571736592146)(C:\Users\tristan\Desktop\从零做CI\pics\1571313889027.png)]
测试:
docker login xxx.com
username
password
docker pull hello-world
docker tag hello-word xxx.com/test/test:0.0.1
docker push xxx.com/test/test:0.0.1
docker pull xxx.com/test/test:0.0.1
#!/usr/bin/env bash
echo "拉取镜像"
docker pull gitlab/gitlab-runner:latest
echo "清理原来目录"
rm -rf /data/tristan/gitlab-runner/config
echo "创建挂载目录"
mkdir -p /data/tristan/gitlab-runner/config
echo "检查磁盘可用"
df -h /data/tristan/gitlab-runner/config
echo "清理原来的gitlab-runner"
docker stop gitlab-runner
docker rm gitlab-runner
echo "运行"
docker run -d --name gitlab-runner --restart always \
-v /data/tristan/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Asia/Shanghai \
gitlab/gitlab-runner:latest
echo "查看日志: docker logs -f gitlab-runner"
sleep 1
docker logs gitlab-runner
echo "注册到gitlab: docker exec -it gitlab-runner gitlab-ci-multi-runner register"
echo "设置默认配置 /data/tristan/gitlab-runner/config/config.toml"
# 修改并发数
echo 'concurrent = 100'
# 修改磁盘挂载
echo ' volumes = ["/cache", "/root/.m2:/root/.m2","/var/run/docker.sock:/var/run/docker.sock","/etc/localtime:/etc/localtime:ro"]'
# 修改拉取镜像策略
echo ' pull_policy = "if-not-present"'
创建dockerregistry认证文件
~/.m2/dockerregistry-auth
密码
~/.m2/dockerregistry
DOCKER_REGISTRY_URL=docker.xxx.com/命名空间
DOCKER_REGISTRY_USERNAME=账号
.gitlab-ci.yml
build:code:
image: maven:3-alpine
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
cache:
paths:
- .m2/repository/
- target/
script:
- echo "Asia/Shanghai" > /etc/timezone
- mvn deploy
pom.xml
${repository.id}
${repository.name}
${repository.url}
default
true
${repository.id}
${repository.name}
${repository.url}
.gitlab-ci.yml
build:code:
stage: build
image: maven:3-alpine
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
cache:
paths:
- target/
script:
- mvn clean package -DskipTests
test:image:
stage: test
image: docker
cache:
paths:
- target/
dependencies:
- :build:code
script:
- chmod 777 build-docker.sh && dos2unix build-docker.sh && source build-docker.sh
build-docker.sh
#!/bin/bash
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>开始构建服务:'${JOB_NAME}
dos2unix /root/.m2/${CI_COMMIT_REF_NAME}/dockerregistry && source /root/.m2/${CI_COMMIT_REF_NAME}/dockerregistry
CUR_DATETIME_STR=$(date "+%Y%m%d%H%M")
IMAGE_PROJECT_TAG=${CI_PROJECT_NAME}"-"${CI_COMMIT_REF_NAME}
IMAGE_ID=${DOCKER_REGISTRY_URL}"/"${IMAGE_PROJECT_TAG}":"${CI_BUILD_ID}"_"${CUR_DATETIME_STR}
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>正在登录镜像仓库'
cat /root/.m2/${CI_COMMIT_REF_NAME}/dockerregistry-auth | docker login ${DOCKER_REGISTRY_URL} --username ${DOCKER_REGISTRY_USERNAME} --password-stdin
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<登录镜像仓库成功'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<正在构建镜像'
docker build --build-arg IMAGE_PROJECT_TAG=${IMAGE_PROJECT_TAG} -t ${IMAGE_ID} .
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<构建镜像成功'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>正在推送镜像到镜像仓库'
docker push ${IMAGE_ID}
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<推送镜像到镜像仓库成功'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>正在清理本地镜像'
docker rmi ${IMAGE_ID}
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<清理本地镜像成功'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<完成构建服务:'${JOB_NAME}
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '请拷贝镜像id到下一环节,镜像id为:'
echo ${IMAGE_ID}
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
Dockerfile
FROM registry-vpc.cn-shenzhen.aliyuncs.com/jlyx/base_image-master:48_201910181447
ADD target/*.jar app.jar
ADD startup.sh startup.sh
RUN bash -c 'touch app.jar'
RUN chmod 777 startup.sh
ARG IMAGE_PROJECT_TAG
ENV SW_AGENT_NAME ${IMAGE_PROJECT_TAG}
ENTRYPOINT ["./startup.sh"]
pom.xml
org.springframework.boot
spring-boot-maven-plugin
true
${repository.id}
${repository.name}
${repository.url}
default
true
${repository.id}
${repository.name}
${repository.url}
startup.sh
#!/usr/bin/env bash
echo "启动服务"
java -javaagent:/agent/skywalking-agent.jar -jar /app.jar ${CLOUD_EUREKA_DEFAULTZONE} ${JASYPT_ENCRYPTOR_PASSWORD}
.gitlab-ci.yml
build:code:
stage: build
image: node
cache:
paths:
- dist/
script:
- rm -rf dist
- npm config set registry https://registry.npm.taobao.org --global
- npm config set disturl https://npm.taobao.org/dist --global
- npm install
- npm run build:prod
test:image:
stage: test
image: docker
cache:
paths:
- dist/
dependencies:
- :build:code
script:
- chmod 777 build-docker.sh && dos2unix build-docker.sh && source build-docker.sh
build-docker.sh
#!/bin/bash
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>开始构建服务:'${JOB_NAME}
dos2unix /root/.m2/${CI_COMMIT_REF_NAME}/dockerregistry && source /root/.m2/${CI_COMMIT_REF_NAME}/dockerregistry
CUR_DATETIME_STR=$(date "+%Y%m%d%H%M")
IMAGE_PROJECT_TAG=${CI_PROJECT_NAME}"-"${CI_COMMIT_REF_NAME}
IMAGE_ID=${DOCKER_REGISTRY_URL}"/"${IMAGE_PROJECT_TAG}":"${CI_BUILD_ID}"_"${CUR_DATETIME_STR}
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>正在登录镜像仓库'
cat /root/.m2/${CI_COMMIT_REF_NAME}/dockerregistry-auth | docker login ${DOCKER_REGISTRY_URL} --username ${DOCKER_REGISTRY_USERNAME} --password-stdin
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<登录镜像仓库成功'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<正在构建镜像'
docker build --build-arg IMAGE_PROJECT_TAG=${IMAGE_PROJECT_TAG} -t ${IMAGE_ID} .
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<构建镜像成功'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>正在推送镜像到镜像仓库'
docker push ${IMAGE_ID}
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<推送镜像到镜像仓库成功'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>正在清理本地镜像'
docker rmi ${IMAGE_ID}
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<清理本地镜像成功'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<完成构建服务:'${JOB_NAME}
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo '请拷贝镜像id到下一环节,镜像id为:'
echo ${IMAGE_ID}
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
echo '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<'
Dockerfile
FROM nginx
WORKDIR /usr/share/nginx/html
COPY dist .