## 創建docker-compose基礎目錄
mkdir -p /usr/local/docker
1、安裝mysql
mkdir -p /usr/local/docker/mysql
1.1、docker-compose.yml內容
version: '3.1'
services:
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
ports:
- 3306:3306
volumes:
- ./data:/var/lib/mysql
adminer:
image: adminer
restart: always
ports:
- 9999:8080
1.2、創建docker-compose.yml文件
## 在/usr/local/docker/mysql目錄創建docker-compose.yml文件並複製粘貼第三部內容到這個文件中
vi /usr/local/docker/mysql/docker-compose.yml
##輸入冒號,接着輸入 set paste ,再輸入i 進入帶格式粘貼模式
1.3、保存退出
wq!
1.4、運行容器
docker-compose up -d
1.5、銷燬容器
docker-compose down
2、安裝gitlab
mkdir -p /usr/local/docker/gitlab
2.1、docker-compose.yml內容
version: '3.1'
services:
web:
image: 'twang2218/gitlab-ce-zh'
restart: always
hostname: '192.168.100.102'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.100.102'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
unicorn['port'] = 8888
nginx['listen_port'] = 80
ports:
- '80:80'
- '443:443'
- '2222:22'
volumes:
- ./config:/etc/gitlab
- ./data:/var/opt/gitlab
- ./logs:/var/log/gitlab
啓動後訪問:http://192.168.100.102
3、安裝nexus3
mkdir -p /usr/local/docker/nexus
3.1、docker-compose.yml內容
version: '3.1'
services:
nexus:
restart: always
image: sonatype/nexus3
container_name: nexus
ports:
- 8081:8081
volumes:
- nexus-data:/nexus-data
volumes:
nexus-data:
啓動後訪問:http://192.168.100.102:8081
根據提示找到密碼複製出來
3.2、maven使用nexus
在setting.xml配置認證信息,在<servers>節點添加如下配置:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
在pom.xml添加部署配置
<distributionManagement>
<repository>
<id>releases</id>
<name>Nexus Release Repository</name>
<url>http://192.168.100.101:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.100.101:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
在pom.xml設置代理倉庫
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://192.168.100.101:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://192.168.100.101:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
配置pom.xml的build信息
<build>
<finalName>myshop</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 資源文件拷貝插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!--Java 編譯插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 打包時跳過測試 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
4、安裝Harbor鏡像倉庫
4.1、下載安裝包:https://github.com/goharbor/harbor/releases
4.2、上傳到 /usr/local/docker/目錄
4.3、解壓 tar -zxvf harbor-offline-installer-v1.9.1-rc1.tgz
4.4、進入到harbor目錄修改harbor.yml文件
hostname: 192.168.100.102
http:
port: 8090
harbor_admin_password: 12345678
4.5、執行 install.sh
./install.sh
啓動後訪問:http://192.168.100.101:8090 用戶名:admin 密碼:Harbor12345
4.6、配置客戶端
##沒有此文件就創建
vim /etc/docker/daemon.json
{
"registry-mirrors":[
"https://registry.docker-cn.com"
],
"insecure-registries":[
"192.168.100.101:8090"
]
}
注意:該文件必須符合JSON規範,否則docker將不能啓動
4.7、重啓服務
systemctl daemon-reload
systemctl restart docker
4.8、檢查私服配置
docker info
4.9 、製作鏡像提交到harbor倉庫
##拉取nginx
docker pull nginx
## 在項目中標記鏡像
## docker tag SOURCE_IMAGE[:TAG] 192.168.100.101:8090/itchao-saas/IMAGE[:TAG]
docker tag nginx:latest 192.168.100.101:8090/itchao-saas/nginx:latest
## 登錄
docker login 192.168.100.101:8090 -u admin -p Harbor12345
## 推送鏡像到當前項目
## docker push 192.168.100.101:8090/itchao-saas/IMAGE[:TAG]
docker push 192.168.100.101:8090/itchao-saas/nginx:latest
5、docker-compose設置網絡
預先創建一個網絡
##創建網絡
docker network create <Network Name>
##查看已存在的網絡
docker network list
在docker-compose.yml中指定網絡
networks:
default:
external:
name: myapp